Merge branch 'master' into word
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// Version 1.3.0
|
||||
// Version 1.3.5
|
||||
|
||||
Function TOfficeObj(n);
|
||||
Begin
|
||||
@@ -5851,7 +5851,7 @@ type TwrPr=class(NodeInfo)
|
||||
,("field":"Strike","name":"w:strike","obj":Strike,"attrEx":"","nodeType":"empty","attrName":"", "desc":"单个删除线", "class":"")
|
||||
,("field":"dStrike","name":"w:dstrike","obj":dStrike,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"两个删除线", "class":"")
|
||||
,("field":"kern","name":"w:kern","obj":kern,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"字体紧排", "class":"")
|
||||
,("field":"Size","name":"w:sz","obj":Size,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"字体大小", "class":"")
|
||||
,("field":"Sz","name":"w:sz","obj":Sz,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"字体大小", "class":"")
|
||||
,("field":"szCs","name":"w:szCs","obj":szCs,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"复杂脚本字体大小", "class":"")
|
||||
,("field":"U","name":"w:u","obj":U,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"下划线", "class":"")
|
||||
,("field":"vertAlign","name":"w:vertAlign","obj":vertAlign,"attrEx":"w:val","nodeType":"","attrName":"", "desc":"对齐方式.", "class":"")
|
||||
@@ -5878,6 +5878,16 @@ type TwrPr=class(NodeInfo)
|
||||
rFont.XMLhAnsi := nName;
|
||||
rFont.XMLascii := nName;
|
||||
End;
|
||||
|
||||
Property Size read readSize write writeSize;
|
||||
Function writeSize(n);
|
||||
Begin
|
||||
Sz := n * 2;
|
||||
End;
|
||||
Function readSize();
|
||||
Begin
|
||||
return int(Sz / 2);
|
||||
End;
|
||||
|
||||
//Attributes
|
||||
|
||||
@@ -5891,7 +5901,7 @@ type TwrPr=class(NodeInfo)
|
||||
Strike;
|
||||
dStrike;
|
||||
kern;
|
||||
Size;
|
||||
Sz;
|
||||
szCs;
|
||||
U;
|
||||
vertAlign;
|
||||
@@ -12133,7 +12143,7 @@ private
|
||||
cnt := length(data);
|
||||
//[err, axis] := ColumnNumberToName(2 * ind + 2);
|
||||
[err, axis] := ColumnNumberToName(ind + 2);
|
||||
Val.NumRef.F := fmt('Sheet1!${}$2:${}${}',axis, axis, cnt+1);
|
||||
Val.NumRef.F := format('Sheet1!$%s$2:$%s$%d', axis, axis, cnt+1);
|
||||
Val.NumRef.NumCache.PtCount := cnt;
|
||||
Val.NumRef.NumCache.formatCode := 'General';
|
||||
for i:=0 to cnt-1 do Begin
|
||||
@@ -12162,8 +12172,7 @@ private
|
||||
else if istable(Categories) then Begin //word 图表
|
||||
cnt := length(Categories);
|
||||
//[err, axis] := ColumnNumberToName(2 * ind + 1);
|
||||
//cat.StrRef.F := fmt('Sheet1!${}$2:${}${}',axis, axis, cnt+1);
|
||||
cat.StrRef.F := fmt('Sheet1!$A$2:$A${}', cnt+1);
|
||||
cat.StrRef.F := format('Sheet1!$A$2:$A$%d', cnt+1);
|
||||
cat.StrRef.StrCache.PtCount := cnt;
|
||||
for i:=0 to cnt-1 do Begin
|
||||
Tpt := TOfficeObj('Tpt');
|
||||
@@ -13280,6 +13289,19 @@ Type TDocumentBody = Class(DocObject)
|
||||
return array(length(errArr), tslFuncCount, errArr);
|
||||
End;
|
||||
|
||||
Function RunTslCode(code, err);
|
||||
Begin
|
||||
try
|
||||
//println('run code=[{}]', code);
|
||||
if code <> '' then
|
||||
eval(&code);
|
||||
except
|
||||
err := ExceptObject.ErrInfo;
|
||||
return false;
|
||||
End;
|
||||
return true;
|
||||
End;
|
||||
|
||||
Function ExecInnerTSLImpl(docx);
|
||||
Begin
|
||||
tslFuncCount := 0;
|
||||
@@ -13413,13 +13435,14 @@ Type TDocumentBody = Class(DocObject)
|
||||
TOfficeApi().Set('CodePage', 'gbk');
|
||||
try
|
||||
tslFuncCount ++;
|
||||
println('run code=[{}]', code);
|
||||
if code <> '' then
|
||||
eval(&code);
|
||||
str := eval(&code);
|
||||
except
|
||||
println('run code={},err={}', code, ExceptObject.ErrInfo);
|
||||
errArr[ length(errArr) ] := array('code':code, 'err':ExceptObject.ErrInfo);
|
||||
str := '';
|
||||
End;
|
||||
tslFuncCount ++;
|
||||
tNode := curRun.node_.FirstChildElement('w:t');
|
||||
if not ifObj(tNode) then Begin //没有在外部插入文字
|
||||
tslBegParagraphNode.DeleteChild(curRunNode);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Version 1.3.0
|
||||
// Version 1.3.5
|
||||
|
||||
Type TSDocxFile = Class
|
||||
///Version: V1.0 2022-09-20
|
||||
@@ -18,7 +18,17 @@ Type TSDocxFile = Class
|
||||
Function Create(alias, fname); overload;
|
||||
Begin
|
||||
init();
|
||||
OpenFile(alias, fname);
|
||||
OpenFile(alias, fname, nil);
|
||||
End;
|
||||
|
||||
///构造函数,打开已经存在的docx文件
|
||||
///alias: string,文件目录别名
|
||||
///fname: string,文件名
|
||||
///passwd: string,密码
|
||||
Function Create(alias, fname, passwd); overload;
|
||||
Begin
|
||||
init();
|
||||
OpenFile(alias, fname, passwd);
|
||||
End;
|
||||
|
||||
Function Destory();
|
||||
@@ -34,11 +44,12 @@ Type TSDocxFile = Class
|
||||
///打开docx文件
|
||||
///alias: string,文件目录别名
|
||||
///fname: string,文件名
|
||||
///[passwd]: string,密码
|
||||
///返回:[err, errmsg]
|
||||
Function OpenFile(alias, fname);
|
||||
Function OpenFile(alias, fname, passwd);
|
||||
Begin
|
||||
if not ifObj(zipfile_) then return array(-1, 'Create ZipFile object fail.');
|
||||
[err, errmsg] := zipfile_.Open(alias, fname);
|
||||
[err, errmsg] := zipfile_.Open(alias, fname, passwd);
|
||||
if err=0 then Begin
|
||||
document_ := new docxDocument(zipfile_);
|
||||
End;
|
||||
@@ -56,6 +67,12 @@ Type TSDocxFile = Class
|
||||
End;
|
||||
return array(err, errmsg);
|
||||
End;
|
||||
|
||||
///设置密码
|
||||
Function SetPassword(passwd)
|
||||
Begin
|
||||
zipfile_.Password := passwd;
|
||||
End;
|
||||
|
||||
///保存文件
|
||||
///返回: [err, info]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Version 1.3.0
|
||||
// Version 1.3.5
|
||||
|
||||
Type TSExcelFile = Class
|
||||
///Version: V1.0 2022-08-08
|
||||
@@ -18,7 +18,17 @@ Type TSExcelFile = Class
|
||||
Function Create(alias, fname); overload;
|
||||
Begin
|
||||
init();
|
||||
OpenFile(alias, fname);
|
||||
OpenFile(alias, fname, nil);
|
||||
End;
|
||||
|
||||
///构造函数,打开已经存在的excel文件
|
||||
///alias: string,文件目录别名
|
||||
///fname: string,文件名
|
||||
///passwd: string,密码
|
||||
Function Create(alias, fname, passwd); overload;
|
||||
Begin
|
||||
init();
|
||||
OpenFile(alias, fname, passwd);
|
||||
End;
|
||||
|
||||
//析构函数
|
||||
@@ -35,12 +45,13 @@ Type TSExcelFile = Class
|
||||
///打开excel文件
|
||||
///alias: string,文件目录别名
|
||||
///fname: string,文件名
|
||||
///[passwd]: string,密码
|
||||
///返回: [err, errmsg]
|
||||
Function OpenFile(alias, fname);
|
||||
Function OpenFile(alias, fname, passwd);
|
||||
Begin
|
||||
init();
|
||||
if not ifObj(zipfile_) then return array(-1, 'Create ZipFile object fail.');
|
||||
[err, errmsg] := zipfile_.Open(alias, fname);
|
||||
[err, errmsg] := zipfile_.Open(alias, fname, passwd);
|
||||
if err=0 then Begin
|
||||
workbook_ := new xlsxWorkBook(zipfile_);
|
||||
workbook_.Load();
|
||||
@@ -69,6 +80,12 @@ Type TSExcelFile = Class
|
||||
return zipfile_.Save();
|
||||
End;
|
||||
|
||||
///设置密码
|
||||
Function SetPassword(passwd)
|
||||
Begin
|
||||
zipfile_.Password := passwd;
|
||||
End;
|
||||
|
||||
///打开二进制内容
|
||||
///data: 二进制数据
|
||||
///返回: [err, errmsg]
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
Function TOfficeInit();
|
||||
Begin
|
||||
sysparams['TOffice sys api'] := nil;
|
||||
End;
|
||||
@@ -30,16 +30,16 @@ Type TDocxChart = Class(TSChart)
|
||||
Function GetInnerXml();
|
||||
Begin
|
||||
ETU := 360045;//1cm单位
|
||||
return fmt('<w:r>
|
||||
return format('<w:r>
|
||||
<w:drawing>
|
||||
<wp:inline>
|
||||
<wp:extent cx="{}" cy="{}"/>
|
||||
<wp:extent cx="%d" cy="%d"/>
|
||||
<wp:effectExtent l="0" t="0" r="19050" b="19050"/>
|
||||
<wp:docPr id="{}" name="{}"/>
|
||||
<wp:docPr id="%d" name="%s"/>
|
||||
<wp:cNvGraphicFramePr />
|
||||
<a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
|
||||
<a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/chart">
|
||||
<c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId{}"/>
|
||||
<c:chart xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" r:id="rId%d"/>
|
||||
</a:graphicData>
|
||||
</a:graphic>
|
||||
</wp:inline>
|
||||
|
||||
@@ -30,7 +30,7 @@ Type TSTag = Class
|
||||
Begin
|
||||
if not ifArray(map_) then Begin
|
||||
map_ := array();
|
||||
println('attribute={}',attribute_);
|
||||
//println('attribute={}',attribute_);
|
||||
arr := Str2Array(attribute_, ' ');
|
||||
for i := 0 to length(arr)-1 do Begin
|
||||
kv := Str2Array(arr[i], '=');
|
||||
|
||||
@@ -124,7 +124,7 @@ xmlns:v="urn:schemas-microsoft-com:vml">
|
||||
if ifObj(node) then Begin
|
||||
[err, col, row] := excel_.CellNameToCoordinates(cell);
|
||||
clientData := TOfficeObj('TClientData');
|
||||
clientData.Anchor := fmt('{},23,{},0,{},{},{},5',col, row, 1+col+lineCount, colCount+col-1, 1+row+lineCount);
|
||||
clientData.Anchor := format('%d,23,%d,0,%d,%d,%d,5',col, row, 1+col+lineCount, colCount+col-1, 1+row+lineCount);
|
||||
clientData.Row := row - 1;
|
||||
ClientData.Column := col - 1;
|
||||
node.UnMarshal(clientData.Marshal());
|
||||
|
||||
@@ -101,7 +101,7 @@ private
|
||||
name := "列" $ col_index++;
|
||||
excel_.WorkBook().SetCellValue(sheetName_, cell, name);
|
||||
end
|
||||
table_str += fmt('<tableColumn id="{}" name="{}" />', id++, name);
|
||||
table_str += format('<tableColumn id="%d" name="%s" />', id, name);
|
||||
end
|
||||
table_str += "</tableColumns>";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user