diff --git a/funcext/TSOffice/TOfficeObj.tsf b/funcext/TSOffice/TOfficeObj.tsf index 0b207df..dc7038c 100644 --- a/funcext/TSOffice/TOfficeObj.tsf +++ b/funcext/TSOffice/TOfficeObj.tsf @@ -1,4 +1,4 @@ -// Version 1.5.3 +// Version 1.5.4 Function TOfficeObj(n); Begin case lowercase(n) of @@ -5743,9 +5743,9 @@ type TwrPr=class(NodeInfo) ,('field':'Em','name':'w:em','obj':Em,'attrEx':'w:val','nodeType':'','attrName':'', 'desc':'强调标志的类型,取值:"comma", "dot", "circle", "underDot", "none"', 'class':'') ,('field':'Imprint','name':'w:imprint','obj':Imprint,'attrEx':'w:val','nodeType':'empty','attrName':'', 'desc':'刻雕效果', 'class':'') ,('field':'Vanish','name':'w:vanish','obj':Vanish,'attrEx':'w:val','nodeType':'empty','attrName':'', 'desc':'隐藏', 'class':'') - ,('field':'Italic','name':'w:i','obj':Italic,'attrEx':'','nodeType':'empty','attrName':'', 'desc':'斜体', 'class':'') - ,('field':'ICs','name':'w:iCs','obj':ICs,'attrEx':'','nodeType':'empty','attrName':'', 'desc':'斜体,适用于从右到左语言文本', 'class':'') - ,('field':'Strike','name':'w:strike','obj':Strike,'attrEx':'','nodeType':'empty','attrName':'', 'desc':'单个删除线', 'class':'') + ,('field':'Italic','name':'w:i','obj':Italic,'attrEx':'w:val','nodeType':'empty','attrName':'', 'desc':'斜体', 'class':'') + ,('field':'ICs','name':'w:iCs','obj':ICs,'attrEx':'w:val','nodeType':'empty','attrName':'', 'desc':'斜体,适用于从右到左语言文本', 'class':'') + ,('field':'Strike','name':'w:strike','obj':Strike,'attrEx':'w:val','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':'Sz','name':'w:sz','obj':Sz,'attrEx':'w:val','nodeType':'','attrName':'', 'desc':'字体大小', 'class':'') @@ -10946,6 +10946,7 @@ Type TParagraph = Class(DocObject, TParagraphImpl) ///返回TRun对象 Function AppendRun(run);overload; Begin + node := run.NodeUri <> '' ? class(TSXml).GetNode(run.Root(), run.NodeUri) : run.Root(); node := node_.InsertAfterChild(run.Root(), 'element','w:r'); node.InsertFirstChild('element', 'w:rPr'); return new TRun(node); @@ -11340,19 +11341,19 @@ Type TRun = Class(DocObject, TRunImpl) ///清除字体格式 Function ClearFormat(); Begin - rPr := node_.FirstChildElement('w:rPr'); - if ifObj(rPr) then - node_.DeleteChild(rPr); + rpr_node := node_.FirstChildElement('w:rPr'); + if ifObj(rpr_node) then + node_.DeleteChild(rpr_node); End; Function CopyFontFormat(fromRun); Begin ClearFormat(); - rPr := fromRun.node_.FirstChildElement('w:rPr'); - if not ifObj(rPr) then + rpr_node := fromRun.node_.FirstChildElement('w:rPr'); + if not ifObj(rpr_node) then return; - data := rPr.Marshal(); + data := rpr_node.Marshal(); node_.InsertFirstChild(data[0]); End; diff --git a/funcext/TSOffice/TSDocxFile.tsf b/funcext/TSOffice/TSDocxFile.tsf index d2d8198..ac7294e 100644 --- a/funcext/TSOffice/TSDocxFile.tsf +++ b/funcext/TSOffice/TSDocxFile.tsf @@ -1,4 +1,4 @@ -// Version 1.5.3 +// Version 1.5.4 Type TSDocxFile = Class ///Version: V1.0 2022-09-20 ///适用于 Microsoft Word docx格式文件 diff --git a/funcext/TSOffice/TSXlsxFile.tsf b/funcext/TSOffice/TSXlsxFile.tsf index f13e801..e5079ef 100644 --- a/funcext/TSOffice/TSXlsxFile.tsf +++ b/funcext/TSOffice/TSXlsxFile.tsf @@ -1,4 +1,4 @@ -// Version 1.5.3 +// Version 1.5.4 Type TSXlsxFile = Class ///Version: V1.0 2022-08-08 ///适用于 Microsoft Excel? 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM / XLTX 等多种文档格式。 @@ -350,11 +350,10 @@ Type TSXlsxFile = Class colNum ++; End; for i:=0 to length(data)-1 do Begin - [err, cell] := CoordinatesToCellName(colNum, rowNum + i); - if err then - return array(err, cell); - t := sselect * from data where thisrowindex = i End; - SetSheetRow(sheet, cell, t); + for j:=0 to length(data[i])-1 do Begin + [err, cell] := CoordinatesToCellName(colNum + j, rowNum + i); + SetCellValue(sheet, cell, data[i][j]); + End; if err then return array(err, info); End; diff --git a/funcext/TSOffice/worksheet/xlsxWorkBook.tsf b/funcext/TSOffice/worksheet/xlsxWorkBook.tsf index dbcf98f..efa7509 100644 --- a/funcext/TSOffice/worksheet/xlsxWorkBook.tsf +++ b/funcext/TSOffice/worksheet/xlsxWorkBook.tsf @@ -110,7 +110,7 @@ Type xlsxWorkBook = Class o := GetSheetObj(sheet); if ifObj(o) then begin - if not o.CellIsExists(axis) and (ifnil(opt) or (istable(opt) and ifnil(opt['s']))) then + if (ifnil(opt) or ifnil(opt['s'])) and not o.CellIsExists(axis) then begin [err, col, row] := CellNameToCoordinates(axis); xml := GetSheetXmlFile(sheet); diff --git a/更新日志.md b/更新日志.md index cc964d8..f45e3f2 100644 --- a/更新日志.md +++ b/更新日志.md @@ -1,5 +1,13 @@ # 更新日志 +## 2023-12-18 + +### V1.5.4 + +#### excel + +1. 优化`InsertTable`的写入效率 + ## 2023-12-11 ### V1.5.3