This commit is contained in:
csh 2024-03-04 16:14:03 +08:00
parent b4ef4a531c
commit a3df0d5df9
8 changed files with 169 additions and 14 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "funcext/TSOffice/Extensions/OfficeVba"]
path = funcext/TSOffice/Extensions/OfficeVba
url = https://git.mytsl.cn/tinysoft/OfficeVba.git

View File

@ -1,4 +1,4 @@
# OfficePlugin
# TSOffice
TSOffice 项目:纯 TSL 代码实现 excel、word 文件读写
@ -28,6 +28,13 @@ TSOffice 项目:纯 TSL 代码实现 excel、word 文件读写
- [Word 帮助文档](./DocxFile使用帮助.docx)
## 扩展
扩展模块的内容需要通过`git submodule update --init --recursive`获取,相关帮助文档在`./funcext/TSOffice/Extensions/模块名`目录下可获取
支持的扩展:
- **OfficeVba** 可通过类 Vba 方式对 office文件 进行读写操作。
## Demo

@ -0,0 +1 @@
Subproject commit a68cfb01d7f8f722987e7c74a78edc7371c810e5

View File

@ -1,4 +1,4 @@
// Version 1.6.4
// Version 1.6.5
Function TOfficeObj(n);
Begin
case lowercase(n) of

View File

@ -1,4 +1,4 @@
// Version 1.6.4
// Version 1.6.5
Type TSDocxFile = Class
///Version: V1.0 2022-09-20
///适用于 Microsoft Word docx格式文件

View File

@ -0,0 +1,139 @@
Type TSPptxFile = Class
///纯TSL模块实现
///PPT文件读写接口
///缺省构造函数
Function Create();overload;
///构造函数打开已经存在的excel文件
///alias: string文件目录别名
///fname: string文件名
Function Create(alias, fname);overload;
///构造函数打开已经存在的excel文件
///alias: string文件目录别名
///fname: string文件名
///passwd: string密码
Function Create(alias, fname, passwd);overload;
//初始化
Function init();
///打开excel文件
///alias: string文件目录别名
///fname: string文件名
///[passwd]: string密码
///返回: [err, errmsg]
Function OpenFile(alias, fname, passwd);
///新建pptx文件
///返回: [err, info]
Function NewFile();
///保存文件
///返回: [err, info]
Function Save();
///设置密码
Function SetPassword(passwd)
///打开二进制内容
///data: 二进制数据
///返回: [err, errmsg]
Function LoadFromMem(data);
///保存为二进制内容
///返回: [err, fileContent] fileContent二进制文件内容
Function SaveToMem();
///另存为
///alias: string文件目录别名
///fname: string文件名
///返回: [err, info]
Function SaveAs(alias, fname);
///真实文件名
///返回: string
Function FileName();
zipfile_;
End;
Function TSPptxFile.Create();overload;
Begin
init();
End;
Function TSPptxFile.Create(alias, fname);overload;
Begin
init();
OpenFile(alias, fname, nil);
End;
Function TSPptxFile.Create(alias, fname, passwd);overload;
Begin
init();
OpenFile(alias, fname, passwd);
End;
Function TSPptxFile.init();
Begin
zipfile_ := new ZipFile();
End;
// TODO
Function TSPptxFile.OpenFile(alias, fname, passwd);
Begin
if not ifObj(zipfile_) then return array(-1, 'Create ZipFile object fail.');
if zipfile_.FilesCount() > 0 then zipfile_ := new ZipFile();
[err, errmsg] := zipfile_.Open(alias, fname, passwd);
if err=0 then Begin
workbook_ := new xlsxWorkBook(zipfile_);
workbook_.Load();
End;
return array(err, errmsg);
End;
//TODO
Function TSPptxFile.NewFile();
Begin
def := TOfficeTemplate('default.pptx', true);
[err, errmsg] := zipfile_.LoadFromMem(def);
if err = 0 then
begin
workbook_ := new xlsxWorkBook(zipfile_);
workbook_.Load();
end
return array(err, errmsg);
End;
Function TSPptxFile.Save();
Begin
return zipfile_.Save();
End;
Function TSPptxFile.SetPassword(passwd)
Begin
zipfile_.Password := passwd;
End;
Function TSPptxFile.LoadFromMem(data);
Begin
[err, errmsg] := zipfile_.LoadFromMem(data);
if err = 0 then
begin
workbook_ := new xlsxWorkBook(zipfile_);
workbook_.Load();
end
return array(err, errmsg);
End;
Function TSPptxFile.SaveToMem();
Begin
return zipfile_.Save2Mem();
End;
Function TSPptxFile.SaveAs(alias, fname);
Begin
return zipfile_.Save(alias, fname);
End;
Function TSPptxFile.FileName();
Begin
return zipfile_.FileName();
End;
Function TSPptxFile.Zip();
Begin
return zipfile_;
End;

View File

@ -1,4 +1,4 @@
// Version 1.6.4
// Version 1.6.5
Type TSXlsxFile = Class
///Version: V1.0 2022-08-08
///适用于 Microsoft Excel? 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM / XLTX 等多种文档格式。
@ -560,8 +560,7 @@ Type TSXlsxFile = Class
///返回: styleid
Function NewStyle(style); overload;
Begin
styleObj := new xlsxStyles('', self);
return styleObj.GetStyleId(style);
return style_.GetStyleId(style);
End;
///新建样式对象已存在样式的基础上返回新的样式Id
@ -570,16 +569,14 @@ Type TSXlsxFile = Class
///返回: styleid
Function NewStyle(style, oldStyleId); overload;
Begin
styleObj := new xlsxStyles('', self);
return styleObj.GetStyleId(style, oldStyleId);
return style_.GetStyleId(style, oldStyleId);
End;
///获取样式对象
///返回: TStyle对象
Function GetStyle(styleid);
Begin
styleObj := new xlsxStyles('', self);
return styleObj.GetStyle(styleid);
return style_.GetStyle(styleid);
End;
///设置单元格样式

View File

@ -2,6 +2,14 @@
## 2023-3-4
### V1.6.5
支持扩展扩展模块
### excel
1. 样式获取报错问题
### V1.6.4
#### word