OfficeVba/docx/TSDocxTable.tsf

198 lines
6.1 KiB
Plaintext

Type TSDocxTable = Class
public
Function Create(application, docx, table);
private
application_;
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 Application read ReadApplication;
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 Creator read ReadCreator;
property Descr read ReadDescr write WriteDescr;
property ID read ReadID write WriteID;
property LeftPadding read ReadLeftPadding write WriteLeftPadding;
property NestingLevel read ReadNestingLevel;
property Parent read ReadParent;
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 ReadParent();
Function ReadNestingLevel();
Function WriteLeftPadding();
Function ReadLeftPadding();
Function WriteID();
Function ReadID();
Function WriteDescr();
Function ReadDescr();
Function ReadCreator();
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 ReadApplication();
Function WriteAllowAutoFit();
Function ReadAllowAutoFit();
End;
// ============== 实现 ================= //
Function TSDocxTable.Create(application, docx, table);
Begin
application_ := application;
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
class(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
class(TSDocxEnumerations).wdAutoFitFixed():
begin
end
class(TSDocxEnumerations).wdAutoFitWindow():
begin
table_.TblPr.WidthType := "pct";
table_.TblPr.Width := 5000;
table_.Apply();
end
End;
End;
Function TSDocxTable.Cell(Row, Column);
Begin
return new TSDocxCell(application_, table_, Row, Column);
End;
// property
Function TSDocxTable.ReadBorders(index);
Begin
borders_obj := new TSDocxBordersTable(application_, table_);
return ifnil(index) ? borders_obj : borders_obj[index];
End;
Function TSDocxTable.ReadColumns(index);
Begin
columns_obj := new TSDocxColumns(application_, table_);
return ifnil(index) ? columns_obj : columns_obj[index];
End;
Function TSDocxTable.ReadRows(index);
Begin
rows_obj := new TSDocxRows(application_, 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;