1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
U
¬ý°dý*ã@sœddlmZddlmZddlZddlmZmZmZm    Z    m
Z
ddl m Z ddl mZmZmZddlmZddlmZmZerˆdd    lmZGd
d „d eƒZdS) é)Ú annotations)Ú defaultdictN)Ú TYPE_CHECKINGÚAnyÚ DefaultDictÚTupleÚcast)Újson)ÚFilePathÚStorageOptionsÚWriteExcelBuffer)Ú ExcelWriter)Úcombine_kwargsÚvalidate_freeze_panes)Ú    ExcelCellc
s¾eZdZdZdZd*ddddddd    d
d œ‡fd d „ Zedd„ƒZeddœdd„ƒZd
dœdd„Z    d+dddddd
dœdd„Z
ddœdd„Z d dœd!d"„Z ddd#œd$d%„Z dd&d
d'œd(d)„Z‡ZS),Ú    ODSWriterZodf)z.odsNÚwz)FilePath | WriteExcelBuffer | ExcelWriterz
str | NoneÚstrr zdict[str, Any] | NoneÚNone)ÚpathÚengineÚ date_formatÚmodeÚstorage_optionsÚif_sheet_existsÚ engine_kwargsÚreturnc      sRddlm}
|dkrtdƒ‚t||    ƒ}|
f|Ž|_tƒj|||||di|_dS)Nr)ÚOpenDocumentSpreadsheetÚaz&Append mode is not supported with odf!)rrrr)Zodf.opendocumentrÚ
ValueErrorrÚ_bookÚsuperÚ__init__Ú _style_dict) ÚselfrrrZdatetime_formatrrrrÚkwargsr©Ú    __class__©úQd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/io/excel/_odswriter.pyr""s 
 ûzODSWriter.__init__cCs|jS)zš
        Book instance of class odf.opendocument.OpenDocumentSpreadsheet.
 
        This attribute can be used to access engine-specific features.
        )r )r$r(r(r)Úbook@szODSWriter.bookzdict[str, Any])rcCs&ddlm}dd„|j |¡Dƒ}|S)z(Mapping of sheet names to sheet objects.r)ÚTablecSsi|]}| d¡|“qS©Úname)Ú getAttribute)Ú.0Úsheetr(r(r)Ú
<dictcomp>Nsÿz$ODSWriter.sheets.<locals>.<dictcomp>)Ú    odf.tabler+r*ZgetElementsByType)r$r+Úresultr(r(r)ÚsheetsIs
 
þzODSWriter.sheetscCs2|j ¡D]}|jj |¡q
|j |jj¡dS)z(
        Save workbook to disk.
        N)r4Úvaluesr*Ú spreadsheetÚ
addElementÚsaveZ_handlesÚhandle)r$r0r(r(r)Ú_saveTszODSWriter._saverzlist[ExcelCell]Úintztuple[int, int] | None)ÚcellsÚ
sheet_nameÚstartrowÚstartcolÚ freeze_panesrcCs´ddlm}m}m}ddlm}    | |¡}|dk    s6t‚||jkrL|j|}
n||d}
|j    j
  |
¡t |ƒrŠt tttf|ƒ}| ||¡t|ƒD]} |
  |ƒ¡q’t|ƒ} ttƒ} t|dd„dD]²}| |jsòt|ƒD]} | |j  |ƒ¡qÚt|j| |jƒD]*} | |j  |ƒ¡| |jd    7<q| |¡\}}| |j  |¡| |jd    7<|    |d
}|  |¡qÄt| ƒdkr°tt|  ¡ƒd    ƒD]}|
  | |¡qšdS) z1
        Write the frame cells using odf
        r)r+Ú    TableCellÚTableRow)ÚPNr,cSs |j|jfS)N)ÚrowÚcol)Úcellr(r(r)Ú<lambda>óz(ODSWriter._write_cells.<locals>.<lambda>)Úkeyé)Útext)r2r+rArBZodf.textrCZ_get_sheet_nameÚAssertionErrorr4r*r6r7rrrr;Ú_create_freeze_panesÚrangerÚsortedrDrEÚ_make_table_cellÚlenÚmaxÚkeys)r$r<r=r>r?r@r+rArBrCZwksÚ_ÚrowsZ    col_countrFÚpvalueZtcÚpZrow_nrr(r(r)Ú _write_cells\s<  
 
 
 
 
 zODSWriter._write_cellszdict[str, int | str]cCsRi}| |j¡}|dk    r ||d<|jdk    rN|jdk    rNtd|jƒ|d<|j|d<|S)a*Convert cell attributes to OpenDocument attributes
 
        Parameters
        ----------
        cell : ExcelCell
            Spreadsheet cell data
 
        Returns
        -------
        attributes : Dict[str, Union[int, str]]
            Dictionary with attributes and attribute values
        NZ    stylenamerJZnumberrowsspannedZnumbercolumnsspanned)Ú_process_styleÚstyleZ
mergestartZmergeendrR)r$rFÚ
attributesZ
style_namer(r(r)Ú_make_table_cell_attributes—s  
z%ODSWriter._make_table_cell_attributesztuple[object, Any]c    Csøddlm}| |¡}| |j¡\}}|}}t|tƒrPt|ƒ ¡}t|ƒ     ¡}t|t
j
ƒr€|  ¡}|  d¡}||d||dfSt|t
j ƒrÆ|j›d|jd›d|jd›}|  d¡}||d||dfStd    td
td
td i}|||t|ƒ||d fSd S)aConvert cell data to an OpenDocument spreadsheet cell
 
        Parameters
        ----------
        cell : ExcelCell
            Spreadsheet cell data
 
        Returns
        -------
        pvalue, cell : Tuple[str, TableCell]
            Display value, Cell value
        r)rAz%cÚdate)Ú    valuetypeZ    datevaluer[ú-Z02dz%xÚstringÚfloatÚboolean)r^Úvaluer[N)r2rAr\Z_value_with_fmtÚvalÚ
isinstanceÚboolrÚlowerÚupperÚdatetimeÚ    isoformatÚstrftimer]ÚyearÚmonthÚdayr;raÚtype)    r$rFrAr[rdÚfmtrVrcZclass_to_cell_typer(r(r)rP­sF 
 
 
 þ 
 þü
ýþzODSWriter._make_table_cell)rZrcCsDddlm}m}m}m}|dkr$dSt |¡}||jkrB|j|Sdt|jƒd›}||j|<||dd}d|kr˜|d}    |         d    d
¡r˜| 
|d    d ¡d |krà|d }
|
  ¡D].\} } d di} | 
|d| ›| | id¡q°d|kr2|d}|     d¡}|r| 
||d¡|     d¡}|r2| 
||d¡|j j  
|¡|S)a Convert a style dictionary to a OpenDocument style sheet
 
        Parameters
        ----------
        style : Dict
            Style dictionary
 
        Returns
        -------
        style_key : str
            Unique style key for later reference in sheet
        r)ÚParagraphPropertiesÚStyleÚTableCellPropertiesÚTextPropertiesNÚpdrJz
table-cell)r-ÚfamilyÚfontZboldF)Z
fontweightÚbordersZthinz0.75pt solid #000000Zborder)r[Ú    alignmentÚ
horizontal)Z    textalignÚvertical)Z verticalalign)Z    odf.stylerqrrrsrtr    Údumpsr#rQÚgetr7Úitemsr*Zstyles)r$rZrqrrrsrtZ    style_keyr-Z    odf_stylerwrxZsideZ    thicknessZthickness_translationryrzr{r(r(r)rYäs@ 
 
 
 
  ÿÿ
 
 
zODSWriter._process_styleztuple[int, int])r=r@rc Csddlm}m}m}m}m}|dd}|jj |¡|dd}    | |    ¡|ƒ}
|     |
¡|dd} |
 | ¡||d}
|  |
¡|
 |ddd    d
¡|
 |d dd    d
¡|
 |d d t    |dƒd
¡|
 |dd t    |dƒd
¡|
 |dd t    |dƒd
¡|
 |dd t    |dƒd
¡dS)zë
        Create freeze panes in the sheet.
 
        Parameters
        ----------
        sheet_name : str
            Name of the spreadsheet
        freeze_panes : tuple of (int, int)
            Freeze pane location x and y
        r)Ú
ConfigItemÚConfigItemMapEntryÚConfigItemMapIndexedÚConfigItemMapNamedÚ ConfigItemSetzooo:view-settingsr,ZViewsZTablesZHorizontalSplitModeÚshortÚ2)r-rorKZVerticalSplitModeZHorizontalSplitPositionr;ZVerticalSplitPositionrJZ PositionRightZPositionBottomN)
Z
odf.configrr€rr‚rƒr*Úsettingsr7r) r$r=r@rr€rr‚rƒZconfig_item_setZconfig_item_map_indexedZconfig_item_map_entryZconfig_item_map_namedr(r(r)rMsJ 
 
 
 
 
 
 
 
 ÿ ÿ
ÿÿ
ÿÿÿÿzODSWriter._create_freeze_panes)NNNrNNN)NrrN)Ú__name__Ú
__module__Ú __qualname__Z_engineZ_supported_extensionsr"Úpropertyr*r4r:rXr\rPrYrMÚ __classcell__r(r(r&r)rs0÷"
 
 ú;74r)Ú
__future__rÚ collectionsrriÚtypingrrrrrZ pandas._libsr    Zpandas._typingr
r r Zpandas.io.excel._baser Zpandas.io.excel._utilrrZpandas.io.formats.excelrrr(r(r(r)Ú<module>s