Type TSDocxTable = Class(TSVbaBase) Uses TSDocxEnumerations; public Function Init(docx, table); private docx_; table_; // TOfficeObj('TTable') 对象 public Function ApplyStyleDirectFormatting(StyleName); Function AutoFitBehavior(Behavior); Function AutoFormat(Format, ApplyBorders, ApplyShading, ApplyFont, ApplyColor, ApplyHeadingRows, ApplyLastRow, ApplyFirstColumn, ApplyLastColumn, AutoFit); Function Cell(Row, Column); Function ConvertToText(Separator, NestedTables); Function Delete(); Function Select(); Function Sort(ExcludeHeader, FieldNumber, SortFieldType, SortOrder, FieldNumber2, SortFieldType2, SortOrder2, FieldNumber3, SortFieldType3, SortOrder3, CaseSensitive, BidiSort, IgnoreThe, IgnoreKashida, IgnoreDiacritics, IgnoreHe, LanguageID); Function SortAscending(); Function SortDescending(); Function Split(BeforeRow); Function UpdateAutoFormat(); property AllowAutoFit read ReadAllowAutoFit write WriteAllowAutoFit; property ApplyStyleColumnBands read ReadApplyStyleColumnBands write WriteApplyStyleColumnBands; property ApplyStyleFirstColumn read ReadApplyStyleFirstColumn write WriteApplyStyleFirstColumn; property ApplyStyleHeadingRows read ReadApplyStyleHeadingRows write WriteApplyStyleHeadingRows; property ApplyStyleLastColumn read ReadApplyStyleLastColumn write WriteApplyStyleLastColumn; property ApplyStyleLastRow read ReadApplyStyleLastRow write WriteApplyStyleLastRow; property ApplyStyleRowBands read ReadApplyStyleRowBands write WriteApplyStyleRowBands; property AutoFormatType read ReadAutoFormatType; property Borders read ReadBorders; property BottomPadding read ReadBottomPadding write WriteBottomPadding; property Columns read ReadColumns; property Descr read ReadDescr write WriteDescr; property ID read ReadID write WriteID; property LeftPadding read ReadLeftPadding write WriteLeftPadding; property NestingLevel read ReadNestingLevel; property PreferredWidth read ReadPreferredWidth write WritePreferredWidth; property PreferredWidthType read ReadPreferredWidthType write WritePreferredWidthType; property Range read ReadRange; property RightPadding read ReadRightPadding write WriteRightPadding; property Rows read ReadRows; property Shading read ReadShading; property Spacing read ReadSpacing write WriteSpacing; property Style read ReadStyle write WriteStyle; property TableDirection read ReadTableDirection write WriteTableDirection; property Tables read ReadTables; property Title read ReadTitle write WriteTitle; property TopPadding read ReadTopPadding write WriteTopPadding; property Uniform read ReadUniform; Function ReadUniform(); Function WriteTopPadding(); Function ReadTopPadding(); Function WriteTitle(); Function ReadTitle(); Function ReadTables(); Function WriteTableDirection(); Function ReadTableDirection(); Function WriteStyle(); Function ReadStyle(); Function WriteSpacing(); Function ReadSpacing(); Function ReadShading(); Function ReadRows(index); Function WriteRightPadding(); Function ReadRightPadding(); Function ReadRange(); Function WritePreferredWidthType(value); Function ReadPreferredWidthType(); Function WritePreferredWidth(value); Function ReadPreferredWidth(); Function ReadNestingLevel(); Function WriteLeftPadding(); Function ReadLeftPadding(); Function WriteID(); Function ReadID(); Function WriteDescr(); Function ReadDescr(); Function ReadColumns(index); Function WriteBottomPadding(); Function ReadBottomPadding(); Function ReadBorders(index); Function ReadAutoFormatType(); Function WriteApplyStyleRowBands(); Function ReadApplyStyleRowBands(); Function WriteApplyStyleLastRow(); Function ReadApplyStyleLastRow(); Function WriteApplyStyleLastColumn(); Function ReadApplyStyleLastColumn(); Function WriteApplyStyleHeadingRows(); Function ReadApplyStyleHeadingRows(); Function WriteApplyStyleFirstColumn(); Function ReadApplyStyleFirstColumn(); Function WriteApplyStyleColumnBands(); Function ReadApplyStyleColumnBands(); Function WriteAllowAutoFit(); Function ReadAllowAutoFit(); End; // ============== 实现 ================= // Function TSDocxTable.Init(docx, table); Begin docx_ := docx; table_ := table; End; // function Function TSDocxTable.ApplyStyleDirectFormatting(StyleName); Begin table_.TblPr.StyleId := docx_.StyleObject().GetStyle(StyleName).Value('StyleId'); table_.Apply(); End; Function TSDocxTable.AutoFitBehavior(Behavior); Begin // TODO : 这里应该使用递归去处理每个单元格 // TODO : 等cell方法完善 case Behavior of TSDocxEnumerations.wdAutoFitContent(): begin table_.TblPr.WidthType := "auto"; table_.TblPr.Width := 0; table_.TblApply(); col := table_.Cols(); row := table_.Rows(); for i:=1 to row do begin for j:=1 to col do begin cell := table_.Cell(i, j); cell.TcPr.Type := "auto"; cell.TcPr.Width := 0; cell.Apply(); end end end TSDocxEnumerations.wdAutoFitFixed(): begin end TSDocxEnumerations.wdAutoFitWindow(): begin table_.TblPr.WidthType := "pct"; table_.TblPr.Width := 5000; table_.Apply(); end End; End; Function TSDocxTable.Cell(Row, Column); Begin cell_obj := new TSDocxCell(self.Application, self.Creator, self); cell_obj.Init(table_, Row, Column); return cell_obj; End; // property Function TSDocxTable.ReadBorders(index); Begin borders_obj := new TSDocxBordersTable(self.Application, self.Creator, self); borders_obj.Init(table_); return ifnil(index) ? borders_obj : borders_obj[index]; End; Function TSDocxTable.ReadColumns(index); Begin columns_obj := new TSDocxColumns(self.Application, self.Creator, self); columns_obj.Init(table); return ifnil(index) ? columns_obj : columns_obj[index]; End; Function TSDocxTable.ReadRows(index); Begin rows_obj := new TSDocxRows(self.Application, self.Creator, self); rows_obj.Init(table_); return ifnil(index) ? rows_obj : rows_obj[index]; End; Function TSDocxTable.WritePreferredWidthType(value); Begin End; Function TSDocxTable.ReadPreferredWidthType(); Begin End; Function TSDocxTable.WritePreferredWidth(value); Begin End; Function TSDocxTable.ReadPreferredWidth(); Begin End;