U o^"@sddlmZddlmZddlmZmZmZddlmZddl m Z m Z m Z m Z mZmZddlmZddlmZddlmZdd lmZGd d d e eZGd d d eZGdddeZGdddeZGdddeZGdddeZdS))copy) safe_string)get_column_intervalcolumn_index_from_stringrange_boundaries)DEFAULT_COLUMN_WIDTH)IntegerFloatBoolStrictStringAlias) Serialisable)StyleableObject)BoundDictionary)ElementcsbeZdZdZdZeZeZeddZ e dZ eZ e dZ dfdd Zd d Zd d ZZS) Dimensionz|}||_tt|j|||||| ddSr>)rFrHrIrErrrDr)rrrrFrErrr5rrrHrIrGr auto_sizer r"r#rs zColumnDimension.__init__cCs t|jS)z.Always true if there is a width for the column)boolrFrBr"r"r#rGszColumnDimension.customWidthcCs&t|j|jgs"t|j|_|_dS)z6 Set boundaries for column definition N)allrHrIrrrBr"r"r#reindexszColumnDimension.reindexcCs&t|}|ddhkr"td|SdS)NrHrIcol)rO)dictkeysr)rattrsr"r"r#to_treeszColumnDimension.to_tree)r1r2r3r4r rFr rEr rKr rrrHrIrrr%rrrCrGrNrSr6r"r"r r#rDys6    rDcs4eZdZdZd fdd Zd dd Zd d ZZS)DimensionHolderz% Allow columns to be grouped rNcs(||_d|_||_tt|||dSr$)r max_outlinedefault_factoryrrTr)rr referencerVr r"r#rszDimensionHolder.__init__Fc Cs|dkr |}t|trp||}||_||_t||dd}|D]}||krD||=qDtt||f\|_|_ n:t|t rt ||dD]}|j j |}||_||_qdS)aTallow grouping a range of consecutive rows or columns together :param start: first row or column to be grouped (mandatory) :param end: last row or column to be grouped (optional, default to start) :param outline_level: outline level :param hidden: should the group be hidden on workbook open or not NrX) isinstancerVrDr5rrmaprrHrIr7rangerZrow_dimensions) rstartendr5rZnew_dimZ work_sequenceZ column_letterelr"r"r#groups  zDimensionHolder.groupcCspdd}td}t}t||dD]*}|}|dk r&||j||q&|r`t||_ t |rl|SdS)NcSs||jSr$)rNrH)r(r"r"r#sortersz'DimensionHolder.to_tree..sortercols)r') rsetsortedvaluesrSaddrappendrIrUlen)rr`r^ZoutlinesrOobjr"r"r#rSs   zDimensionHolder.to_tree)rN)NrXF)r1r2r3r4rr_rSr6r"r"r r#rTs rTc @speZdZdZeddZeddZeZe ddZ e ddZ e ddZ e ddZ eddZeddZd ddZdS) SheetFormatPropertiesZ sheetFormatPrTrNc Cs:||_||_||_||_||_||_||_||_| |_dSr$) baseColWidthdefaultColWidthdefaultRowHeightr: zeroHeightr= thickBottomoutlineLevelRowoutlineLevelCol) rrlrmrnr:ror=rprqrrr"r"r#rs zSheetFormatProperties.__init__) rjNrkNNNNNN)r1r2r3tagnamerrlr rmrnr r:ror=rprqrrrr"r"r"r#ris(        ric@s,eZdZdZeZdddZeddZdS)SheetDimensionZ dimensionNcCs ||_dSr$)ref)rrur"r"r#r szSheetDimension.__init__cCs t|jSr$)rrurBr"r"r# boundaries&szSheetDimension.boundaries)N) r1r2r3rsr rurrCrvr"r"r"r#rts  rtN)rZopenpyxl.compatrZopenpyxl.utilsrrrZopenpyxl.utils.unitsrZopenpyxl.descriptorsrr r r r r Z!openpyxl.descriptors.serialisablerZopenpyxl.styles.styleablerZopenpyxl.utils.bound_dictionaryrZopenpyxl.xml.functionsrrr7rDrTrirtr"r"r"r#s        '8@=$