diff --git a/Demo/wordHelp.tsl b/Demo/wordHelp.tsl deleted file mode 100644 index 12d1579..0000000 --- a/Demo/wordHelp.tsl +++ /dev/null @@ -1,1169 +0,0 @@ -///Version:V1.03 -///Create by Tinysoft. -///自动生成 TSDocxFile 帮助文件 -mtic; -//SetProfiler(7); -docx := new TSDocxFile(); -[err, errmsg] := docx.NewFile(); -if err then - return println( 'Create NewFile Fail:{}.', errmsg); - -//多级项目编号 -sysparams['numId'] := docx.NumberingObject().NumberId('multilevel', 'decimal'); - -///Test 0: 文档标题 -paragraphTitle := _0_AddTitle(docx); - -///Test 1: 文档说明 -_1_HelpInfo(docx); - -///Test 2: 文档API -_2_DocumentApi(docx); - -///Test 3: TParagraph对象 -_3_Paragraph(docx); - -///Test 4: TTable对象 -_4_Table(docx); - -///Test 5: TPicture对象 -_5_Picture(docx); - -///Test 6: TComments对象 -_6_Comments(docx); - -///Test 7: TRevision对象 -_7_Revision(docx); - -///文档属性 -_8_CoreProperties(docx); - -///章节、页脚、页眉 -_9_TDocSection(docx); - -///文本框 -_10_TTextBox(docx); - -///TRange -_11_TRange(docx); - -///TDocxStyles -_12_TDocxStyles(docx); - -///TNumbering -_13_TNumbering(docx); - -///TDocxChart -_14_TDocxChart(docx); - -///TOfficeApi -_15_TOfficeApi(docx); - -///ExecInnerTSL -_16_Template(docx); - -///附注 -_Annotation(docx); - -///Faq -_Faq(docx); - -///目录 -content := docx.AddTableContent(paragraphTitle, 1, 3); -docx.AddPageBreak(content.node_); - - -v := docx.SaveAs('', TOfficeApi().CurCodePageToGBK('DocxFile使用帮助.docx')); -println('Test Over!\n Save {}: {},time={}秒', file, v, mtoc); - -//info := GetProfilerInfo(true); -//exportfile(ftstream(),'','\\temp\\ProfilerInfo.stm',info); - -/////////////////////////////////////////////////////////////////////////////////////////////// -///子函数 -///Test 1: 文档标题 -Function _0_AddTitle(docx); -Begin - _PrintMsg('AddTitle'); - p := _AddTitle(docx, '天软DOCX文档操作接口帮助文档', 0);//添加文档标题 - p.Font.Size := 24; - p.Apply(); - for i:=0 to 16 do - docx.AddLineBreak(-1);//换行符 - - r := array(('文档编号','TS-XXXXXX-XXX'),('文档版本','Version 1.0'),('修订日期',datetimetostr(Now())),('保密级别','')); - tbl := docx.CreateTable(r); - tbl.Format.Indent := 500; - tbl.format.IndentType := 'dxa'; - //设置列宽 - tbl.ColumnWidth(1, 2000); - tbl.ColumnWidth(2, 6000); - tbl := docx.InsertTable(tbl, -1); - for i:=1 to 4 do Begin - //第1列底纹设置 - cell := tbl.Cell(i, 1); - cell.Format.Shading.Val := 'clear'; - cell.Format.Shading.Color := 'auto'; - cell.Format.Shading.Fill := 'D9D9D9'; - cell.Apply(); - //第2列,据中对齐 - c2 := tbl.Cell(i, 2); - c2.Format.vAlign := 'center'; - c2.pFormat.Alignment := 'center'; - c2.Apply(); - End; - tbl.Apply(); - p := docx.AddPageBreak(-1);//换页符 - - println(' >>OK\n'); - return p; -End; - -///Test 1: 前言 -Function _1_HelpInfo(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('前言'); - _AddTitle(docx, '前言', 1); //第一段标题 - - //添加段落 - preface := TOfficeObj('TParagraph'); - preface.Run.SetText( '本文档由word_help.tsl脚本,调用本文档中描述的接口自动生成!' ); - preface.Format.FirstLineIndent := 220; //指定段落第一行缩进的相对差异的值 - preface.Format.LeftIndent := 440;//段落左边距 - preface.Font.Name := '宋体'; - preface.Font.Color := 'FF0000'; - preface.Font.Bold := true; - preface.Font.Size := 16; - p1 := docx.AddParagraph(preface, -1, nil); - - println(' >>OK\n'); -End; - -///Test 2: 文档API -Function _2_DocumentApi(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('Document Api'); - _AddTitle(docx, '文档接口(TSDocFile)', 1); //第二段标题 - - _AddTitle(docx, 'TSDocFile方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TSDocxFile.tsf', 'TSDocxFile'); - _AddFunctionHelpInfo(docx, paragraph $ '.1.', conf, 3); - - println(' >>OK\n'); -End; - -///Test 3: TParagraph对象 -Function _3_Paragraph(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TParagraph对象'); - _AddTitle(docx, 'TParagraph对象(段落)', 1); //第三段标题 - - ///TParagraph属性 - _AddTitle(docx, 'TParagraph属性(段落属性TwpPr对象、字体属性TwrPr对象)', 2); //第二级标题 - attrs := array(('类别':'缺省w:r元素', '接口':'Run', '说明':'TRun对象'), - ('类别':'段落属性', '接口':'Format', '说明':'TwpPr对象'), - ('类别':'字体属性', '接口':'Font', '说明':'TwrPr对象')); - _AddClassHelpTable(docx, attrs);//添加表格:TParagraph属性 - - ///TParagraph方法 - _AddTitle(docx, 'TParagraph方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TParagraph'); - conf union= _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'DocObject'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.2.', conf, 3); - - ///TRun方法 - _AddTitle(docx, 'TRun方法(段落中w:r元素)', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TRun'); - conf union= _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'DocObject'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.3.', conf, 3); - - ///TTabStops对象 - _AddTitle(docx, 'TTabStops对象', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TTabStops'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.4.', conf, 3); - - ///TabStop属性 - _AddTitle(docx, 'TTabStop属性', 2); //第二级标题 - attrs := array(); - formatObj := new TOfficeObj('TTabStop'); - _LoadObjectAttributes(formatObj, attrs, 'TTabStop属性', ''); - _AddClassHelpTable(docx, attrs); - - println(' >>OK\n'); -End; - -///Test 4: TTable对象 -Function _4_Table(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TTable对象'); - _AddTitle(docx, 'TTable对象(表格)', 1); //第四段标题 - - ///TTable对象 - _AddTitle(docx, 'TTable对象属性', 2); //第二级标题 - tbl := new TOfficeObj('TTable'); - attrs := array(('类别':'单元格属性', '接口':'Paragraph', '说明':'TParagrap对象:设置单元格段落格式、字体格式')); - _LoadObjectAttributes(tbl.Format, attrs, '表格样式', 'Format'); - _LoadObjectAttributes(tbl.FormatEx, attrs, '浮动表设置', 'FormatEx'); - _AddClassHelpTable(docx, attrs);//添加表格:TTable属性 - - ///TTable方法 - _AddTitle(docx, 'TTable方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TTable'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.2.', conf, 3); - - ///TCell对象 - _AddTitle(docx, 'TCell对象属性', 2); - attrs := array(); - formatObj := new TOfficeObj('TwTcPr'); - _LoadObjectAttributes(formatObj, attrs, '单元格属性', 'Format'); - _AddClassHelpTable(docx, attrs);//添加表格:TCell属性 - - ///TCell方法 - _AddTitle(docx, 'TCell方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TCell'); - conf union= _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TDocumentBody'); - conf union= _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'DocObject'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.4.', conf, 3); - - println(' >>OK\n'); -End; - -///Test 5: TPicture对象 -Function _5_Picture(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TPicture对象'); - _AddTitle(docx, 'TPicture对象(图像)', 1); //第五段标题 - - ///TPicture对象属性 - _AddTitle(docx, 'TPicture对象属性', 2); - attrs := array(('类别':'图片信息', '接口':'Image', '说明':'二进制内容'), - ('类别':'图片信息', '接口':'Descr', '说明':'图像描述'), - ('类别':'图片信息', '接口':'Width', '说明':'图像宽度(cm)'), - ('类别':'图片信息', '接口':'Height', '说明':'图像高度(cm)') - ); - //pPr := new TOfficeObj('TpicsPpr'); - //_LoadObjectAttributes(pPr, attrs, '图像属性', 'Format'); - _AddClassHelpTable(docx, attrs);//添加表格:TPicture对象 - - ///TPicture方法 - _AddTitle(docx, 'TPicture方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TPicture'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.2.', conf, 3); - - ///插入图像案例 - _AddTitle(docx, '插入图像案例', 2); - picture := TOfficeObj('TPicture'); - picture.Descr := '插入图像案例'; - picture.Image := TOfficeTemplate('tinysoft.gif',true); - if ifnil(picture.Image) then return; - p := docx.AddPicture(picture, -1); - //添加图像外边框 - p.Format.Ln.SolidFill.SchemeClr.Val := 'accent1'; - p.Apply(); - - println(' >>OK\n'); -End; - -///Test 6: TDocComments对象 -Function _6_Comments(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TDocComments对象'); - _AddTitle(docx, 'TDocComments对象(批注集合)', 1); //第六段标题 - - ///TDocComments方法 - _AddTitle(docx, 'TDocComments方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TDocComments'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.1.', conf, 3); - - ///TDocComment对象属性 - _AddTitle(docx, 'TDocComment对象属性', 2); - attrs := array( - ('类别':'属性', '接口':'sPos', '说明':'被标注文字在文档中的位置'), - ('类别':'属性', '接口':'SelectLength', '说明':'选择文字的长度,汉字当一个字符,不计算换行符号') - ); - pPr := new TOfficeObj('TDocComment'); - _LoadObjectAttributes(pPr, attrs, '属性', 'Format'); - _AddClassHelpTable(docx, attrs);//添加表格:TDocComment对象 - - ///TDocComment方法 - _AddTitle(docx, 'TDocComment方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TDocComment'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.2.', conf, 3); - - //插入批注案例 - _AddTitle(docx, '插入批注案例', 2); - //添加测试段落文字 - p1 := TOfficeObj('TParagraph'); - p1.Format.FirstLineIndent := 220; //指定段落第一行缩进的相对差异的值 - p1.Format.LeftIndent := 440;//段落左边距 - p1.Run.SetText('本文档由天软科技制作。'); - p1.Run.rPr.Name := '宋体'; - p1.Run.rPr.Bold := true; - p1.Run.rPr.Size := 16; - p1.Run.rPr.Color := 'FF0000'; - p2 := docx.AddParagraph(p1, -1, nil); - //插入批注 - comment := docx.NewComment('Tinysoft', '深圳市天软科技开发有限公司'); - comment.sPos := 4; - comment.SelectLength := 4; - p2.AddComment(comment); - //嵌套批注 - comment := docx.NewComment('Tinysoft', '嵌套批注:Tinysoft'); - comment.sPos := 4; - comment.SelectLength := 2; - p2.AddComment(comment); - //2层嵌套批注 - comment := docx.NewComment('Tinysoft', '2层嵌套批注Tiny'); - comment.sPos := 4; - comment.SelectLength := 1; - p2.AddComment(comment); - //2层嵌套批注 - comment := docx.NewComment('Tinysoft', '2层嵌套批注Software'); - comment.sPos := 5; - comment.SelectLength := 1; - p2.AddComment(comment); - - //读取批注案例 - _AddTitle(docx, '读取批注案例', 2); - r := array(); - commentObjs := docx.Comments(); - for i:=0 to commentObjs.Count()-1 do Begin - comment := commentObjs.Comment(i); - r[i]['批注ID'] := comment.CommentID; - r[i]['批注文字范围'] := comment.Text(); - End; - tbl := docx.CreateTable(r, true, true); - tbl.Format.Indent := 500; - tbl.format.IndentType := 'dxa'; - tbl := docx.InsertTable(tbl, -1); - - //删除批注案例 - _AddTitle(docx, '删除批注案例(执行docx.Comments().Comment(3).Delete();)', 2); - //删除批注 - docx.Comments().Comment(3).Delete(); - r := array(); - commentObjs := docx.Comments(); - for i:=0 to commentObjs.Count()-1 do Begin - comment := commentObjs.Comment(i); - r[i]['批注ID'] := comment.CommentID; - r[i]['批注文字范围'] := comment.Text(); - End; - tbl := docx.CreateTable(r, true, true); - tbl.Format.Indent := 500; - tbl.format.IndentType := 'dxa'; - tbl := docx.InsertTable(tbl, -1); - - println(' >>OK\n'); -End; - -///Test 7: TRevision对象 -Function _7_Revision(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TRevision对象'); - _AddTitle(docx, 'TRevision对象(修订)', 1); //第七段标题 - - ///TRevision对象 - _AddTitle(docx, 'TRevision属性', 2); - attrs := array( - ('类别':'属性', '接口':'sPos', '说明':'被标注文字在文档中的位置'), - ('类别':'属性', '接口':'SelectLength', '说明':'选择文字的长度,汉字当一个字符,不计算换行符号') - ); - formatObj := new TOfficeObj('TRevision'); - _LoadObjectAttributes(formatObj, attrs, '属性', ''); - _AddClassHelpTable(docx, attrs);//添加表格:TRevision属性 - - ///TRevision方法 - _AddTitle(docx, 'TRevision方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TRevision'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.2.', conf, 3); - - //插入修订案例 - _AddTitle(docx, '插入修订案例', 2); - //添加测试段落文字 - p1 := TOfficeObj('TParagraph'); - p1.Format.FirstLineIndent := 220; //指定段落第一行缩进的相对差异的值 - p1.Format.LeftIndent := 440;//段落左边距 - p1.Run.SetText( '插入案例。' ); - p1.Run.rPr.Name := '宋体'; - p1.Run.rPr.Bold := true; - p1.Run.rPr.Size := 16; - p1.Run.rPr.Color := 'FF0000'; - pAddRevision := docx.AddParagraph(p1, -1, nil); - //插入修订 - revision := TOfficeObj('TRevision'); - revision.Author := '修订者'; - revision.sPos := 2; - revision.InsText := '修订'; - pAddRevision.AddRevision(revision); - - //删除修订案例 - _AddTitle(docx, '删除修订案例', 2); - //添加测试段落文字 - p1 := TOfficeObj('TParagraph'); - p1.Format.FirstLineIndent := 220; //指定段落第一行缩进的相对差异的值 - p1.Format.LeftIndent := 440;//段落左边距 - p1.Run.SetText( '删除修订案例。' ); - p1.Run.rPr.Name := '宋体'; - p1.Run.rPr.Bold := true; - p1.Run.rPr.Size := 16; - p1.Run.rPr.Color := 'FF0000'; - pDelRevision := docx.AddParagraph(p1, -1, nil); - //删除修订 - revision := TOfficeObj('TRevision'); - revision.Author := '修订者'; - revision.sPos := 4; - revision.SelectLength := 2; - pDelRevision.DelRevision(revision); - - //读取修订案例 - _AddTitle(docx, '读取修订案例', 2); - revisions := pAddRevision.Revisions(); - revisions union= pDelRevision.Revisions(); - r := array(); - for i:=0 to length(revisions)-1 do Begin - r[i]['Act'] := revisions[i].Act(); - r[i]['Text'] := revisions[i].Text(); - //if i=1 then - // revisions[i].Accept(); //接受修订 - // revisions[i].Reject(); //拒绝修订 - End; - tbl := docx.CreateTable(r, true, true); - tbl.Format.Indent := 500; - tbl.format.IndentType := 'dxa'; - tbl := docx.InsertTable(tbl, -1); - - println(' >>OK\n'); -End; - -///文档属性 -Function _8_CoreProperties(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TCoreProperties对象'); - _AddTitle(docx, 'TCoreProperties对象(文档属性)', 1); //第八段标题 - - ///TCoreProperties对象 - _AddTitle(docx, 'TCoreProperties对象', 2); - attrs := array( - ('类别':'属性', '接口':'Author', '说明':'读写属性:作者'), - ('类别':'属性', '接口':'Category', '说明':'读写属性:此包内容的分类。示例值可能包括:简历、信函、财务预测、提案或技术演示。'), - ('类别':'属性', '接口':'Description', '说明':'读写属性:文档描述'), - ('类别':'属性', '接口':'Subject', '说明':'读写属性:文档主题'), - ('类别':'属性', '接口':'Title', '说明':'读写属性:文档名称'), - ('类别':'属性', '接口':'Version', '说明':'读写属性:自由格式版本字符串'), - ('类别':'属性', '接口':'Rversion', '说明':'读写属性:此修订的编号,每次保存文档时按Word递增。'), - ('类别':'属性', '接口':'KeyWords', '说明':'读写属性:可能用作本文档搜索词的描述性词或短短语'), - ('类别':'属性', '接口':'Created', '说明':'读写属性:创建日期'), - ('类别':'属性', '接口':'Modified', '说明':'读写属性:上次修改文档的时间'), - ('类别':'属性', '接口':'LastModifiedBy', '说明':'读写属性:上次修改文档的人的姓名或其他标识符(如电子邮件地址)'), - ); - _AddClassHelpTable(docx, attrs);//添加表格:TCoreProperties属性 - - println(' >>OK\n'); -End; - -///章节、页脚、页眉 -Function _9_TDocSection(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TDocSection对象'); - _AddTitle(docx, 'TDocSection对象(章节)', 1); //第九段标题 - - ///TDocSection对象 - _AddTitle(docx, 'TDocSection对象(章节)', 2); - formatObj := new TOfficeObj('TDocSection'); - _LoadObjectAttributes(formatObj, attrs, '属性', ''); - _AddClassHelpTable(docx, attrs);//添加表格:TDocSection属性 - - ///TDocSection方法 - _AddTitle(docx, 'TDocSection方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TDocSection'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.2.', conf, 3); - - ///THeaderFooter方法 - _AddTitle(docx, 'THeaderFooter方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TDocHeaderFooter'); - conf union= _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TDocumentBody'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.3.', conf, 3); - - ///添加页眉、页脚案例 - _AddTitle(docx, '添加页眉、页脚案例', 2); - help := TOfficeObj('TParagraph'); - help.Run.SetText( '参考word_help.tsl脚本(TDocxFile::Sections, TDocSection::AddHeader, TDocSection::AddFooter)!' ); - help.Format.FirstLineIndent := 220; //指定段落第一行缩进的相对差异的值 - help.Format.LeftIndent := 440;//段落左边距 - help.Font.Name := '宋体'; - help.Font.Color := 'FF0000'; - help.Font.Bold := true; - help.Font.Size := 15; - p1 := docx.AddParagraph(help, -1, nil); - - section := docx.Sections(-1);//获取缺省章节 - footer := section.AddFooter('');//添加缺省页脚 - //页脚内容 - p := TOfficeObj('TParagraph'); - p.Run.SetText( '电 话:0755-83937039' ); - p.AddRun('网 址:http://www.tinysoft.com.cn', true); - p.AddRun('公司地址:深圳市福田区莲花街道梅岭社区新闻路59号深茂商业中心19F', true); - p.Format.Bdr.Top.val := 'single';//页脚横线 - p.Format.SpaceAfter := 0; - p.Font.Name := '宋体'; - p.Font.Color := 'FF0000'; - p.Font.Size := 8; - p2 := footer.AddParagraph(p, -1, nil); - p.Font.Size := 8; - pgno := footer.AddPageNumber('第 {-3} 页,共 {1} 页', p.Font); //添加页码 - pgno.Format.Alignment := 'center'; //据中对齐 - pgno.Format.SpaceAfter := 0; - pgno.Apply(); - - //添加页眉 - header := section.AddHeader('');//添加缺省页眉 - p := TOfficeObj('TParagraph'); - p.Run.SetText( '深圳市天软科技开发有限公司' ); - p.Format.Alignment := 'right'; //据右对齐 - //p.Format.Bdr.Bottom.val := 'single';//页眉横线 - p.Font.Name := '宋体'; - p.Font.Color := 'FF0000'; - p.Font.Size := 8; - p1 := header.AddParagraph(p, -1, nil); - - println(' >>OK\n'); -End; - -///文本框 -Function _10_TTextBox(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TTextBox对象'); - _AddTitle(docx, 'TTextBox对象(文本框)', 1); //第十段标题 - - ///TTextBox方法 - _AddTitle(docx, 'TTextBox方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TDocumentBody'); - conf := select * from conf where leftstr(['funcname'],10) <> 'AddPicture' end; - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.1.', conf, 3); - - println(' >>OK\n'); -End; - -///TRange -Function _11_TRange(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TRange对象'); - _AddTitle(docx, 'TRange对象', 1); //第11段标题 - - ///TRange对象 - _AddTitle(docx, 'TRange对象', 2); - attrs := array( - ('类别':'属性', '接口':'Font', '说明':'字体属性,参考段落字体属性'), - ('类别':'属性', '接口':'Text', '说明':'读写属性:文字内容') - ); - _AddClassHelpTable(docx, attrs);//添加表格:TRange属性 - - ///TRange方法 - _AddTitle(docx, 'TRange方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TRange'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.2.', conf, 3); - - //修改字体属性案例 - _AddTitle(docx, '字体属性设置案例', 2); - //添加测试段落文字 - p1 := TOfficeObj('TParagraph'); - p1.Format.FirstLineIndent := 220; //指定段落第一行缩进的相对差异的值 - p1.Format.LeftIndent := 440;//段落左边距 - p1.Run.SetText( '深圳市天软公司' ); - p1.Run.rPr.Name := '宋体'; - pTest := docx.AddParagraph(p1, -1, nil); - //修改部分文字字体 - range := pTest.Range(3,2); - range.Font.Size := 16; - range.Font.Color := 'FF0000'; - range.Font.Bold := true; - range.Apply(); - //添加文字1 - range1 := pTest.AddText(5, '科技开发有限'); - range1.Font.Size := 14; - range1.Font.Color := '00FF00'; - range1.Font.Bold := true; - range1.Apply(); - //添加文字2 - range2 := pTest.AddText(0, '广东省'); - range2.Font.Size := 14; - range2.Font.Color := '0000FF'; - range2.Font.Bold := true; - range2.Apply(); - //r := pTest.Range(2,10); - //r.Text := 'Tinysoft'; - - r := pTest.AddText(-1, ':www.tinysoft.com.cn');//段落后追加 - r.Font.Size := 10; - r.Font.Color := '0000FF'; - r.Font.Bold := true; - r.Apply(); - - println(' >>OK\n'); -End; - -///TDocxStyles -Function _12_TDocxStyles(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TDocxStyles对象'); - _AddTitle(docx, 'TDocxStyles对象', 1); //第12段标题 - - ///TDocxStyles方法 - _AddTitle(docx, 'TDocxStyles方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\document\\TDocxStyles.tsf', 'TDocxStyles'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.1.', conf, 3); - - _AddTitle(docx, '样式(TDocxStyle)', 2); //第二级标题 - attrs := array(); - formatObj := new TOfficeObj('TDocxStyle'); - _LoadObjectAttributes(formatObj, attrs, '样式', ''); - _AddClassHelpTable(docx, attrs); - - println(' >>OK\n'); -End; - -///TNumbering -Function _13_TNumbering(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TNumbering对象'); - _AddTitle(docx, 'TNumbering对象', 1); //第13段标题 - - ///TNumbering方法 - _AddTitle(docx, 'TNumbering方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\document\\TNumbering.tsf', 'TNumbering'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.1.', conf, 3); - - ///TNumStyle对象 - _AddTitle(docx, 'TNumStyle属性', 2); - formatObj := new TOfficeObj('TNumStyle'); - _LoadObjectAttributes(formatObj, attrs, '属性', ''); - _AddClassHelpTable(docx, attrs);//添加表格:TNumStyle属性 - - //缺省项目符号 - _AddTitle(docx, '缺省项目符号', 2); - for i:=0 to 6 do Begin - p := TOfficeObj('TParagraph'); - p.Format.numPr.Level := 0;//项目编号 - p.Format.numPr.numId := docx.NumberingObject().NumberId('bullet', i); //项目编号 - p.Font.Size := 14; - p.Font.Color := 'FF0000'; - p.Font.Bold := true; - p.Format.LeftIndent := 700;//段落左边距 - p.Run.SetText( 'NumberId("bullet", ' $ i $ ')' ); - docx.AddParagraph(p, -1, nil); - End; - - println(' >>OK\n'); -End; - -///TDocxChart -Function _14_TDocxChart(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TChart对象'); - _AddTitle(docx, 'TChart对象', 1); //第14段标题 - - ///TDocxChart方法 - _AddTitle(docx, 'TChart方法', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TOfficeObj.tsf', 'TChart'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.1.', conf, 3); - - ///TChart对象 - _AddTitle(docx, 'TChart属性', 2); - formatObj := new TOfficeObj('TChart'); - _LoadObjectAttributes(formatObj, attrs, '属性', ''); - _AddClassHelpTable(docx, attrs);//添加表格:TChart属性 - - data := array( - ('年度':2019, '深圳':26927, '广州':23628, '佛山':10751, '东莞':9482, '惠州':4177, '其它':32706), - ('年度':2020, '深圳':27670, '广州':25019, '佛山':10816, '东莞':9650, '惠州':4222, '其它':33383.92), - ('年度':2021, '深圳':30665, '广州':28232, '佛山':12157, '东莞':10855, '惠州':4977, '其它':37483.7) - ); - tmpData := nils(3,7); - tmpData[:,:] := data; - _AddTitle(docx, '案例一:广东省2019——2021年GDP(柱状图)', 2); - chart := TOfficeObj('TChart'); - chart.Width := 15; - chart.Height := 9; - chart.Type := 'col'; - chart.VaryColors := true; - chart.Name := 'GD-GDP-1'; - chart.Title := '广东省2019——2021年GDP(单位:亿元)'; - names := FieldNames(data)[1:]; - for i:=0 to length(data)-1 do - chart.AddSeries('' $ data[i]['年度'], names, (tmpData[i])[1:]); - chart.ShowLegendKey := false; - chart.Legend.Position := 'bottom'; - chart.ShowBubbleSize := true; - chart.ShowCatName := false; - chart.ShowPercent := true; - chart.ShowSerName := false; - chart.ShowVal := false; - chart.ShowBlanksAs := 'zero'; - chart.DataTable := true; - docx.AddChart(chart, -1); - - _AddTitle(docx, '案例二:广东省2019——2021年GDP(折线图)', 2); - chart.Name := 'GD-GDP-2'; - chart.Type := 'line'; - chart.ShowBubbleSize := false; - chart.ShowPercent := false; - chart.DataTable := false; - chart.ClearSeries(); - for i:=0 to length(names)-1 do begin - k := names[i]; - chart.AddSeries(names[i], array('2019','2020','2021'), sselect [k] from data end); - End; - docx.AddChart(chart, -1); - - _AddTitle(docx, '案例三:广东省2021年GDP(饼状图)', 2); - chart.Name := 'GD-GDP-3'; - chart.Title := '广东省2021年GDP(单位:亿元)'; - chart.Type := 'pie'; - chart.ShowCatName := true; - chart.ClearSeries(); - chart.AddSeries('广东省', names, (tmpData[2])[1:]); - docx.AddChart(chart, -1); - - charts := array(("Type":"area","图表类型":"标准二维面积图"), - ("Type":"areastacked","图表类型":"二维堆积面积图"), - ("Type":"areapercentstacked","图表类型":"二维百分比堆积面积图"), - ("Type":"area3d","图表类型":"标准三维面积图"), - ("Type":"area3dstacked","图表类型":"三维堆积面积图"), - ("Type":"area3dpercentstacked","图表类型":"三维百分比堆积面积图"), - ("Type":"bar","图表类型":"二维簇状条形图"), - ("Type":"barstacked","图表类型":"二维堆积条形图"), - ("Type":"barpercentstacked","图表类型":"二维百分比堆积条形图"), - ("Type":"bar3dclustered","图表类型":"三维簇状条形图"), - ("Type":"bar3dstacked","图表类型":"三维堆积条形图"), - ("Type":"bar3dpercentstacked","图表类型":"三维百分比堆积条形图"), - ("Type":"bar3dconeclustered","图表类型":"三维簇状水平圆锥图"), - ("Type":"bar3dconestacked","图表类型":"三维堆积水平圆锥图"), - ("Type":"bar3dconepercentstacked","图表类型":"三维堆积百分比水平圆锥图"), - ("Type":"bar3dpyramidclustered","图表类型":"三维簇状水平棱锥图"), - ("Type":"bar3dpyramidstacked","图表类型":"三维堆积水平棱锥图"), - ("Type":"bar3dpyramidpercentstacked","图表类型":"三维堆积百分比水平棱锥图"), - ("Type":"bar3dcylinderclustered","图表类型":"三维簇状水平圆柱图"), - ("Type":"bar3dcylinderstacked","图表类型":"三维堆积水平圆柱图"), - ("Type":"bar3dcylinderpercentstacked","图表类型":"三维堆积百分比水平圆柱图"), - ("Type":"col","图表类型":"二维簇状柱形图"), - ("Type":"colstacked","图表类型":"二维堆积柱形图"), - ("Type":"colpercentstacked","图表类型":"二维百分比堆积柱形图"), - ("Type":"col3d","图表类型":"三维簇状柱形图"), - ("Type":"col3dclustered","图表类型":"三维柱形图"), - ("Type":"col3dstacked","图表类型":"三维堆积柱形图"), - ("Type":"col3dpercentstacked","图表类型":"三维百分比堆积柱形图"), - ("Type":"col3dcone","图表类型":"三维圆锥图"), - ("Type":"col3dconeclustered","图表类型":"三维簇状圆锥图"), - ("Type":"col3dconestacked","图表类型":"三维堆积圆锥图"), - ("Type":"col3dconepercentstacked","图表类型":"三维百分比堆积圆锥图"), - ("Type":"col3dpyramid","图表类型":"三维棱锥图"), - ("Type":"col3dpyramidclustered","图表类型":"三维簇状棱锥图"), - ("Type":"col3dpyramidstacked","图表类型":"三维堆积棱锥图"), - ("Type":"col3dpyramidpercentstacked","图表类型":"三维百分比堆积棱锥图"), - ("Type":"col3dcylinder","图表类型":"三维圆柱图"), - ("Type":"col3dcylinderclustered","图表类型":"三维簇状圆柱图"), - ("Type":"col3dcylinderstacked","图表类型":"三维堆积圆柱图"), - ("Type":"col3dcylinderpercentstacked","图表类型":"三维百分比堆积圆柱图"), - ("Type":"bubble","图表类型":"气泡图"), - ("Type":"bubble3d","图表类型":"3D气泡图"), - ("Type":"doughnut","图表类型":"圆环图"), - ("Type":"line","图表类型":"折线图"), - ("Type":"pie3d","图表类型":"三维饼图"), - ("Type":"pie","图表类型":"饼图"), - ("Type":"radar","图表类型":"雷达图"), - ("Type":"scatter","图表类型":"散点图"), - ("Type":"surface3d","图表类型":"三维曲面图"), - ("Type":"wireframesurface3d","图表类型":"三维曲面图(框架图)"), - ("Type":"contour","图表类型":"曲面图"), - ("Type":"wireframecontour","图表类型":"曲面图(俯视框架图)")); - _AddTitle(docx, '系统支持的图表类型', 2); - tbl := docx.CreateTable(charts, true, true); - tbl.Format.Indent := 500; - tbl.format.IndentType := 'dxa'; - //设置列宽 - tbl.ColumnWidth(1, 2000); - tbl.ColumnWidth(2, 6000); - tbl.ColumnWidth(3, 8000); - tbl := docx.InsertTable(tbl, -1); - - println(' >>OK\n'); -End; - -///TOfficeApi -Function _15_TOfficeApi(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('TOfficeApi接口'); - _AddTitle(docx, 'TOfficeApi', 1); - - _AddTitle(docx, 'TOfficeApi接口', 2); - conf := _LoadClassInfo(docx.GetPath() + '\\funcext\\TSOffice\\TSUtils\\TOfficeApi.tsf', 'TOffice'); - _AddFunctionHelpInfo(docx, '' $ paragraph $ '.1.', conf, 3); - - println(' >>OK\n'); -End; - -Function _16_Template(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('报告模板(ExecInnerTSL)'); - _AddTitle(docx, '报告模板(docx.ExecInnerTSL())', 1); - - //添加段落 - p := TOfficeObj('TParagraph'); - p.Run.SetText( '系统提供docx.ExecInnerTSL()接口,用户可以制作自定义的报告模板,参考文档:' + 'template.docx。'); - p.Format.FirstLineIndent := 220; //指定段落第一行缩进的相对差异的值 - p.Format.LeftIndent := 440;//段落左边距 - p.Font.Name := '宋体'; - p.Font.Color := 'FF0000'; - p.Font.Bold := true; - p.Font.Size := 15; - p1 := docx.AddParagraph(p, -1, nil); - - println(' >>OK\n'); -End; - -Function _AddTitle(docx, subject, level); -Begin - leftIndent := array((0,0), (425,425), (453,850), (708,1508)); - p := docx.AddHeading(subject, -1, level);//标题 - if level then Begin - p.Format.FirstLineChars := 0; - p.Format.LeftChars := 0; - p.Format.Hanging := leftIndent[level][0]; - p.Format.LeftIndent := leftIndent[level][1];//段落左边距 - End - else //标题 - p.Format.Alignment := 'center'; //据中对齐 - //p.Font.Name := '宋体'; - p.Font.rFont.hint := 'eastAsia'; - p.Font.Bold := true; - if level then Begin - p.Format.numPr.Level := level - 1; //项目级别 - p.Format.numPr.numId := sysparams['numId']; //项目编号 - End; - p.Apply(); - return p; -End; - -///添加函数帮助信息 -Function _AddFunctionHelpInfo(docx, head, conf, level); -Begin - ind := 1; - hash := array(); - for i:=0 to length(conf)-1 do Begin - if not ifString(conf[i]['comment']) or conf[i]['comment'] = '' then continue; - arr := str2array(conf[i]['funcname'], '('); - k := lowercase(arr[0]); - if hash[k]=1 and not (k in array('create')) then continue; - hash[k] := 1; - subject := head $ ind++ $ ' ' $ conf[i]['funcname']; - _AddTitle(docx, conf[i]['funcname'], level); - - //添加函数声明段落 - pFun := TOfficeObj('TParagraph'); - pFun.Format.Hanging := 660; //悬挂缩进 - pFun.Format.LeftIndent := 1760;//段落左边距 - pFun.Font.Name := '宋体'; - println(' Subject:{}', subject); - pFun.Run.SetText( 'Function ' + conf[i]['funcname'] ); - p1 := docx.AddParagraph(pFun, -1, nil);//函数方法 - //设置首行字体颜色、黑体 - firstRun := p1.GetRun(0); - firstRun.Font.Color := 'FF0000'; - firstRun.Font.Bold := true; - firstRun.Apply(); - - //添加函数帮助信息段落 - arr := str2array(conf[i]['comment'], '\n'); - for j:=0 to length(arr)-1 do Begin - pFun.Run.SetText('///' + arr[j]); - p2 := docx.AddParagraph(pFun, -1, nil); - End; - - End; -End; - -///从对象中加载属性 -Function _LoadObjectAttributes(obj, r, itemType, api); -Begin - if not ifArray(r) then r := array(); - attrs := obj.GetAttrs(); - ind := length(r); - for i:=0 to length(attrs)-1 do Begin - if attrs[i, 3] = 'disable' then continue; - r[ind]['类别'] := itemType; - r[ind]['接口'] := ifthen(api='','',api + '.') + attrs[i, 0]; - r[ind]['说明'] := attrs[i, 3]; - ind++; - End; - - children := obj.GetChildren(); - for i:=0 to length(children)-1 do Begin - descText := children[i]['desc']; - if descText = 'disable' then continue; - if ifObj(children[i]['obj']) then Begin - if descText = '' then Begin - _LoadObjectAttributes(children[i]['obj'], r, itemType, ifthen(api='','',api + '.') $ children[i]['field']); - ind := length(r); - continue; - End - else Begin - if not ifArray(sysParams['objs']) then - sysParams['objs'] := array(); - cnt := length(sysParams['objs']); - sysParams['objs'][cnt] := array('name':children[i]['field'], 'obj':children[i]['obj'], 'desc':children[i]['desc'], 'class':children[i]['class']); - descText := descText $ '(' $ children[i]['class'] $ '对象)'; - End; - End - r[ind]['类别'] := itemType; - r[ind]['接口'] := ifthen(api='','',api + '.') + children[i]['field']; - r[ind]['说明'] := descText; - ind++; - End; -End; - -///添加对象属性表格 -Function _AddClassHelpTable(docx, data); -Begin - //设置边框属性 - tbl := docx.CreateTable(data, true, true); - tbl.Format.Borders.Top.Size := 12; - tbl.Format.Borders.Left.Size := 12; - tbl.Format.Borders.Bottom.Size := 12; - tbl.Format.Borders.Right.Size := 12; - tbl.Format.Borders.Top.Val := 'thinThickThinMediumGap'; - tbl.Format.Borders.Left.Val := 'thinThickThinMediumGap'; - tbl.Format.Borders.Bottom.Val := 'thinThickThinMediumGap'; - tbl.Format.Borders.Right.Val := 'thinThickThinMediumGap'; - tbl.Format.Borders.InsideH.Val := 'single'; - tbl.Format.Borders.InsideV.Val := 'single'; - tbl.Format.Borders.Top.color := 'D0D0D0'; - tbl.Format.Borders.Left.color := 'D0D0D0'; - tbl.Format.Borders.Bottom.color := 'D0D0D0'; - tbl.Format.Borders.Right.color := 'D0D0D0'; - tbl.Format.Borders.Top.themeColor := 'accent3'; - tbl.Format.Borders.Left.themeColor := 'accent3'; - tbl.Format.Borders.Bottom.themeColor := 'accent3'; - tbl.Format.Borders.Right.themeColor := 'accent3'; - tbl.Format.Borders.Top.themeTint := '99'; - tbl.Format.Borders.Left.themeTint := '99'; - tbl.Format.Borders.Bottom.themeTint := '99'; - tbl.Format.Borders.Right.themeTint := '99'; - - //设置列宽 - tbl.ColumnWidth(1, 600); - tbl.ColumnWidth(2, 2100); - tbl.ColumnWidth(3, 2100); - tbl.ColumnWidth(4, 6000); - - //设置表格左边距 - tbl.Format.Indent := 500; - tbl.format.IndentType := 'dxa'; - //tbl.TblPr.Style := 1; - tbl := docx.InsertTable(tbl, -1); - - //设置表头底纹 - rows := tbl.Rows(); - cols := tbl.Cols(); - for i:=1 to cols do Begin - cell := tbl.Cell(1, i); - cell.Format.Shading.ThemeFillTint := 32; - cell.Format.Shading.ThemeFill := 'accent5'; - cell.Format.Shading.Fill := 'DBEEF3'; - cell.Apply(); - End; - - //设置第1列底纹 - for i:=1 to rows do Begin - cell := tbl.Cell(i, 1); - cell.Format.Shading.ThemeFillTint := 32; - cell.Format.Shading.ThemeFill := 'accent5'; - cell.Format.Shading.Fill := 'DBEEF3'; - cell.Apply(); - End; - - //合并单元格 - fields := select distinct [1] as 'type' from data where thisrowindex > 0 end; - for i:=0 to length(fields)-1 do begin - key := fields[i]['type']; - r := select thisrowindex+1 as 'row' from data where [1] = key end; - begRow := r[0]['row']; - endRow := r[length(r)-1]['row']; - [err, begCell] := CoordinatesToCellName(2, begRow); - [err, endCell] := CoordinatesToCellName(2, endRow); - tbl.Merge(begCell, endCell, true); - - //设置合并单元格据中对齐 - cell := tbl.Cell(begRow, 2); - cell.Format.vAlign := 'center'; - cell.Apply(); - End; -End; - -///打印信息 -Function _PrintMsg(msg); -Begin - if ifNil(sysparams['Test']) then sysParams['Test'] := 0; - println('This is test {}: {}.',sysParams['Test'],msg); - sysParams['Test'] := sysParams['Test'] + 1; -End; - -///从TSDocxFile.tsf文件加载API -function _LoadClassInfo(f, className); -Begin - _ReplaceFileName(f); - if istable(sysparams[f]) then Begin - return sysParams[f, className]; - End; - [err,fh] := io_open(f); - if err then return array(); - [err, data] := io_read(fh); - io_close(fh); - if err then return array(); - sysparams[f] := array(); - - comment := ''; - cName := ''; - funcname := ''; - t := array(); - lines := str2array(string(data), '\n'); - for i:=0 to length(lines)-1 do begin - line := lines[i]; - if leftstr(line, 5) = 'Type ' then Begin - a := str2array(line, ' '); - cName := a[1]; - continue; - End; - if lowercase(leftstr(line, 3)) = 'end' then Begin - if cName <> '' then Begin - sysParams[f, cName] := t; - End; - cName := ''; - t := array(); - continue; - End; - if cName = '' then continue; - str := ' End;'; - if leftstr(line, length(str)) = str then Begin - comment := ''; - name := ''; - continue; - End; - func := ' Function '; - if leftstr(line, length(func)) = func then Begin - funcname := rightstr(line, length(line)-length(func)); - if funcname <> '' then Begin - n := length(t); - t[n]['funcname'] := funcname; - t[n]['comment'] := comment; - t[n]['name'] := name; - End; - comment := ''; - name := ''; - continue; - End; - if ParseRegExpr('\/\/\/(.*)$',line,'',result,MPos,Mlen) and length(result) then Begin - str := result[0][1]; - comment := comment + (comment = '' ? '' : '\n') + str; - if name='' then begin - name := str; - end; - End; - End; - return sysParams[f, className]; -End; - -///附注 -Function _Annotation(docx); -Begin - r := sysParams['objs']; - if not istable(r) then return; - sysParams['objs'] := array(); - paragraph := sysparams['Test']; - _PrintMsg('附注'); - _AddTitle(docx, '附注一:内置对象', 1); //附注标题 - - ind := 1; - hash := array(); - while i < length(r) do Begin - attrs := array(); - _LoadObjectAttributes(r[i]['obj'], attrs, '属性', ''); - classname := r[i]['class']; - if istable(attrs) and ifnil(hash[classname]) then Begin - _AddTitle(docx, classname $ '对象:' $ r[i]['desc'], 2); - attrs := array(); - _LoadObjectAttributes(r[i]['obj'], attrs, '属性', ''); - _AddClassHelpTable(docx, attrs);//添加表格 - if istable(sysParams['objs']) then Begin - r union= sysParams['objs']; - sysParams['objs'] := array(); - End; - hash[classname] := 1; - End; - i++; - End; - - println(' >>OK\n'); -End; - -Function _Faq(docx); -Begin - paragraph := sysparams['Test']; - _PrintMsg('FAQ'); - _AddTitle(docx, '附注二:FAQ', 1); //附注FAQ标题 - - data := TOfficeTemplate('faq.txt'); - if ifnil(data) then return; - lines := str2array(string(data), '\n'); - numId := docx.NumberingObject().NumberId('bullet', 1); //项目编号 - for i:=0 to length(lines)-1 do Begin - title := flase; - str := lines[i]; - p := TOfficeObj('TParagraph'); - if str <> '' then Begin - if str[1] = '*' then Begin - title := true; - str := str[2:]; - println(' FAQ: {}', str); - End; - p.Run.SetText( str ); - End; - if title then Begin - p.Format.numPr.Level := 0;//项目编号 - p.Format.numPr.numId := numId; - p.Font.Size := 14; - p.Font.Color := 'FF0000'; - p.Font.Bold := true; - p.Format.LeftIndent := 500;//段落左边距 - End - else Begin - p.Format.Hanging := 300; //悬挂缩进 - p.Format.LeftIndent := 880;//段落左边距 - End; - docx.AddParagraph(p, -1, nil); - End; - - println(' >>OK\n'); -End; - -Function _ReplaceFileName(f); -Begin - if f[1] = '/' then - f := ReplaceStr(f, '\\', '/'); - return f; -End; diff --git a/README.md b/README.md index f15235a..b5f89be 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ TSOffice 项目:纯 TSL 代码实现 excel、word 文件读写 可选: -- `fmt_pubkrnl_plugin` 放入 tsl 安装根目录下 Plugin 文件夹,若需要执行Demo文件夹下的[ExcelHelp.tsl](./Demo/ExcelHelp.tsl)和[WordHelp.tsl](./Demo/WordHelp.tsl),需要部署改动态库 +- `fmt_pubkrnl_plugin` 放入 tsl 安装根目录下 Plugin 文件夹,若需要执行Demo文件夹下的[XlsxHelp.tsl](./Demo/XlsxHelp.tsl)和[DocxHelp.tsl](./Demo/DocxHelp.tsl),需要部署改动态库 ### Linux @@ -22,7 +22,7 @@ TSOffice 项目:纯 TSL 代码实现 excel、word 文件读写 ## 帮助文档 -- [Excel 帮助文档](./ExcelFile使用帮助.xlsx) +- [Excel 帮助文档](./XlsxFile使用帮助.xlsx) - [Word 帮助文档](./DocxFile使用帮助.docx) diff --git a/funcext/TSOffice/TSXlsxFile.tsf b/funcext/TSOffice/TSXlsxFile.tsf index f9cfb69..618084f 100644 --- a/funcext/TSOffice/TSXlsxFile.tsf +++ b/funcext/TSOffice/TSXlsxFile.tsf @@ -1,3 +1,5 @@ +// Version 1.4.9 + Type TSXlsxFile = Class ///Version: V1.0 2022-08-08 ///适用于 Microsoft Excel? 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM / XLTX 等多种文档格式。 @@ -1056,3 +1058,4 @@ private workbook_; //WorkBook对象 objMgr_; //各种对象缓存、管理 End; +