v1.5.2-patch2
This commit is contained in:
commit
3607dab833
|
|
@ -0,0 +1,297 @@
|
|||
Unit TSWordTemplateMethods;
|
||||
Interface
|
||||
Function ExcelChartCopyPic(excelFileName, excelSheetName, chartName, width, height);
|
||||
Function WordAddOleObjectFromFile(fileName, width, height);
|
||||
Function WordBr();
|
||||
Function WordCopyFromExcel(excelFileName, excelSheetName, startRow, startCol, endRow, endCol);
|
||||
Function WordGetCurrentDocument();
|
||||
Function WordGetCurrentRange();
|
||||
Function WordGetFont(prop, value);
|
||||
Function WordGetLastRange();
|
||||
Function WordGetLastShape();
|
||||
Function WordGetLastTable();
|
||||
Function WordGetLastTableCellProp(row, col, name, value);
|
||||
Function WordGetLastTableProp(name, value);
|
||||
Function WordLastTableMerge(row1, col1, row2, col2);
|
||||
Function WordSetCurrentRange(range);
|
||||
Function WordSetFont(prop, value);
|
||||
Function WordSetLastTableCellProp(row, col, name, value);
|
||||
Function WordSetLastTableProp(name, value);
|
||||
Function WordSetRangeProp(name, value);
|
||||
Function WordTemplate(data, template, fileName);
|
||||
Function WordWrite();
|
||||
Function WordWritePicFromFile(fileName);
|
||||
Function WordWriteTable(table, writeIntIndex, writeIntTitle, incIntIndex);
|
||||
|
||||
Implementation
|
||||
Function ExcelChartCopyPic(excelFileName, excelSheetName, chartName, width, height);
|
||||
Begin
|
||||
docx := TOfficeApi().GetDocument();
|
||||
chart := docx.CopyExcelChart(excelFileName, excelSheetName, chartName, width, height, TOfficeApi().GetCurrentPosition());
|
||||
return ifObj(chart);
|
||||
End;
|
||||
|
||||
Function WordBr();
|
||||
Begin
|
||||
TOfficeApi().GetDocument().AddLineBreak(TOfficeApi().Get('CurrentPosition'));
|
||||
End;
|
||||
|
||||
Function WordCopyFromExcel(excelFileName, excelSheetName, startRow, startCol, endRow, endCol);
|
||||
Begin
|
||||
excel := new TSXlsFile();
|
||||
[err, msg] := excel.OpenFile('', excelFileName);
|
||||
if err then return false;
|
||||
total_row := excel.TotalRows(excelSheetName);
|
||||
total_col := excel.TotalCols(excelSheetName);
|
||||
if not total_row or not total_col then return false;
|
||||
if ifnil(startRow) then
|
||||
startRow := 1;
|
||||
if ifnil(startCol) then
|
||||
startCol := 1;
|
||||
if ifnil(endRow) then
|
||||
endRow := total_row;
|
||||
if ifnil(endCol) then
|
||||
endCol := total_col;
|
||||
data := excel.GetTable(excelSheetName,
|
||||
CoordinatesToCellName(startCol, startRow),
|
||||
CoordinatesToCellName(endCol, endRow),
|
||||
false,
|
||||
false,
|
||||
false);
|
||||
if length(data) = 0 then return false;
|
||||
//println('data={}',data);
|
||||
docx := TOfficeApi().GetDocument();
|
||||
tbl := docx.CreateTable(data, false, false);
|
||||
tbl.Format.Borders.Top.Val := 'dashed';
|
||||
tbl.Format.Borders.Left.Val := 'dashed';
|
||||
tbl.Format.Borders.Bottom.Val := 'dashed';
|
||||
tbl.Format.Borders.Right.Val := 'dashed';
|
||||
tbl.Format.Borders.InsideH.Val := 'dashed';
|
||||
tbl.Format.Borders.InsideV.Val := 'dashed';
|
||||
tbl := docx.InsertTable(tbl, TOfficeApi().GetCurrentPosition());
|
||||
End;
|
||||
|
||||
Function WordGetCurrentDocument();
|
||||
Begin
|
||||
return TOfficeApi().GetDocument();
|
||||
End;
|
||||
|
||||
Function WordGetCurrentRange();
|
||||
Begin
|
||||
return TOfficeApi().GetCurrentPosition();
|
||||
End;
|
||||
|
||||
Function WordGetFont(prop, value);
|
||||
Begin
|
||||
crun := TOfficeApi().GetCurrentRun();
|
||||
node := crun.Node().FirstChildElement('w:rPr');
|
||||
rPr := TOfficeObj('TwrPr');
|
||||
rPr.InitRootNode(node);
|
||||
value := rPr.Value(prop);
|
||||
if not ifnil(value) then return true;
|
||||
return false;
|
||||
End;
|
||||
|
||||
Function WordGetLastShape();
|
||||
Begin
|
||||
node := TOfficeApi().Get('CurrentShape');
|
||||
if not ifObj(node) then return nil;
|
||||
uri := 'w:r/w:drawing/wp:inline/a:graphic/a:graphicData/c:chart';
|
||||
cNode := class(TSXml).GetNode(node, uri);
|
||||
if ifObj(cNode) then Begin
|
||||
chart := TOfficeObj('TChart');
|
||||
chart.Init(TOfficeApi().GetDocument(), node, cNode);
|
||||
return chart;
|
||||
End;
|
||||
|
||||
pic := TOfficeObj('TPicture');
|
||||
pic.Init(node);
|
||||
return pic;
|
||||
End;
|
||||
|
||||
Function WordGetLastRange();
|
||||
Begin
|
||||
return TOfficeApi().GetCurrentPosition();
|
||||
End;
|
||||
|
||||
Function WordGetLastTable();
|
||||
Begin
|
||||
return TOfficeApi().Get('CurrentTable');
|
||||
End;
|
||||
|
||||
Function WordGetLastTableCellProp(row, col, name, value);
|
||||
Begin
|
||||
table_node := TOfficeApi().Get('CurrentTable');
|
||||
if ifnil(table_node) then return false;
|
||||
table := TOfficeObj("TTable");
|
||||
table.Init(table_node);
|
||||
table_cell := table.Cell(row, col);
|
||||
ctr := _wordCompTable();
|
||||
name_ := ctr[lowercase(name)];
|
||||
if ifnil(name_) then name_ := name;
|
||||
str := 'return table_cell.Format.' $ name_ $ '"' $ value $ '"';
|
||||
value := eval(&str);
|
||||
return true;
|
||||
End;
|
||||
|
||||
Function WordGetLastTableProp(name, value);
|
||||
Begin
|
||||
table_node := TOfficeApi().Get('CurrentTable');
|
||||
if ifnil(table_node) then return false;
|
||||
table := TOfficeObj("TTable");
|
||||
table.Init(table_node);
|
||||
ctr := _wordCompTable();
|
||||
name_ := ctr[lowercase(name)];
|
||||
if ifnil(name_) then name_ := name;
|
||||
str := 'return table.Format.' $ name_ $ '"' $ value $ '"';
|
||||
value := eval(&str);
|
||||
return true;
|
||||
End;
|
||||
|
||||
Function WordLastTableMerge(row1, col1, row2, col2);
|
||||
Begin
|
||||
table_node := TOfficeApi().Get('CurrentTable');
|
||||
if ifnil(table_node) then return false;
|
||||
table := TOfficeObj("TTable");
|
||||
table.Init(table_node);
|
||||
[err1, beg_cell] := CoordinatesToCellName(col1, row1);
|
||||
[err2, end_cell] := CoordinatesToCellName(col2, row2);
|
||||
if err1 or err2 then return false;
|
||||
table.Merge(beg_cell, end_cell, false);
|
||||
return true;
|
||||
End;
|
||||
|
||||
Function WordSetCurrentRange(range);
|
||||
Begin
|
||||
TOfficeApi().Set('CurrentPosition', range);
|
||||
End;
|
||||
|
||||
Function WordSetFont(prop, value);
|
||||
Begin
|
||||
run := TOfficeApi().GetCurrentRun();
|
||||
str := 'run.font.' $ prop $ ' := ' $ '"' $ value $ '"';
|
||||
eval(&str);
|
||||
run.Apply();
|
||||
return true;
|
||||
End;
|
||||
|
||||
Function WordSetLastTableCellProp(row, col, name, value);
|
||||
Begin
|
||||
table := TOfficeApi().Get('CurrentTable');
|
||||
if ifnil(table) then return false;
|
||||
table_cell := table.Cell(row, col);
|
||||
ctr := _wordCompTable();
|
||||
name_ := ctr[lowercase(name)];
|
||||
if ifnil(name_) then name_ := name;
|
||||
str := 'table_cell.Format.' $ name_ $ ' := ';
|
||||
if ifstring(value) then
|
||||
str += '"' $ value $ '"';
|
||||
else
|
||||
str := str $ value;
|
||||
eval(&str);
|
||||
return true;
|
||||
End;
|
||||
|
||||
Function WordSetLastTableProp(name, value);
|
||||
Begin
|
||||
table := TOfficeApi().Get('CurrentTable');
|
||||
if ifnil(table) then return false;
|
||||
ctr := _wordCompTable();
|
||||
name_ := ctr[lowercase(name)];
|
||||
if ifnil(name_) then name_ := name;
|
||||
str := 'table.Format.' $ name_ $ ' := ';
|
||||
if ifstring(value) then
|
||||
str += '"' $ value $ '"';
|
||||
else
|
||||
str := str $ value;
|
||||
eval(&str);
|
||||
TOfficeApi().Set('CurrentTable', table);
|
||||
return true;
|
||||
End;
|
||||
|
||||
Function WordSetRangeProp(name, value);
|
||||
Begin
|
||||
cur := TOfficeApi().GetCurrentPosition();
|
||||
if ifnil(cur) then return nil;
|
||||
End;
|
||||
|
||||
Function WordTemplate(data, template, fileName);
|
||||
Begin
|
||||
setsysparam('data', data);
|
||||
docx := new TSDocxFile();
|
||||
[err, msg] := docx.OpenFile('', template);
|
||||
if err then return false;
|
||||
docx.ExecInnerTSL();
|
||||
if ifstring(fileName) then
|
||||
begin
|
||||
[err, msg] := docx.SaveAs('', fileName);
|
||||
if err then return false;
|
||||
end
|
||||
return true;
|
||||
End;
|
||||
|
||||
Function WordWrite();
|
||||
Begin
|
||||
docx := TOfficeApi().GetDocument();
|
||||
curParagraph := TOfficeApi().GetCurrentParagraph();
|
||||
curRun := TOfficeApi().GetCurrentRun();
|
||||
for i:=1 to PARAMCOUNT do Begin
|
||||
argv := params[i];
|
||||
if ifstring( argv ) then
|
||||
curRun.AddText( argv );
|
||||
else if ifnumber(argv) then
|
||||
curRun.AddText('' $ argv);
|
||||
else if ifarray(argv) then Begin
|
||||
tbl := docx.CreateTable(argv, false, false);
|
||||
tbl := docx.InsertTable(tbl, TOfficeApi().GetCurrentPosition());
|
||||
End
|
||||
End
|
||||
End;
|
||||
|
||||
Function WordWritePicFromFile(fileName);
|
||||
Begin
|
||||
file_size := fileSize('', fileName);
|
||||
flag := readfile(rwbinary(), '', fileName, 0, file_size, data);
|
||||
if not flag then return false;
|
||||
picture := TOfficeObj('TPicture');
|
||||
picture.Image := data;
|
||||
docx := TOfficeApi().GetDocument();
|
||||
docx.AddPicture(picture, TOfficeApi().GetCurrentPosition());
|
||||
return true;
|
||||
End;
|
||||
|
||||
Function WordWriteTable(table, writeIntIndex, writeIntTitle, incIntIndex);
|
||||
Begin
|
||||
docx := TOfficeApi().GetDocument();
|
||||
tbl := docx.CreateTable(table, true, writeIntIndex);
|
||||
table := docx.InsertTable(tbl, TOfficeApi().GetCurrentPosition());
|
||||
return true;
|
||||
End;
|
||||
|
||||
Function _wordCompTable();
|
||||
Begin
|
||||
return array(
|
||||
'alignment': 'Alignment',
|
||||
'shadingcolor': 'Shading.Color',
|
||||
'style': 'StyleID',
|
||||
'verticalalignment': 'Valign',
|
||||
'width': 'Width',
|
||||
);
|
||||
End;
|
||||
|
||||
// TODO:尚未支持
|
||||
Function WordAddOleObjectFromFile(fileName, width, height);
|
||||
Begin
|
||||
End;
|
||||
Function WordCopyPicFormatExcel(excelFileName, excelSheetName, startRow, startCol, endRow, endCol, picType);
|
||||
Begin
|
||||
End;
|
||||
Function WordGetRangeProp(name, value);
|
||||
Begin
|
||||
End;
|
||||
Function WordLastTableSplit(row, col, rCnt, cCnt);
|
||||
Begin
|
||||
End;
|
||||
|
||||
End.
|
||||
|
||||
Loading…
Reference in New Issue