aardio 文档
aardio 范例: DOCX 内容读取 · 不需要 Office
import win.ui;
import fsys.dlg;
/*DSG{{*/
var winform = win.form(text="DOCX 内容读取 · 不需要 Office";right=799;bottom=539)
winform.add(
button={cls="button";text="选择 Word 文档…";left=16;top=16;right=180;bottom=48;anchors={left=1;top=1};z=1};
status={cls="static";text="只读提取正文与基本表格,不渲染页面";left=196;top=22;right=781;bottom=46;anchors={left=1;top=1;right=1};z=2};
output={cls="edit";left=16;top=64;right=782;bottom=522;edge=1;multiline=1;readonly=1;vscroll=1;hscroll=1;anchors={left=1;top=1;right=1;bottom=1};z=3}
)
/*}}*/
var readFile = function(path){
winform.button.disabled = true;
winform.status.text = "正在读取…";
// MSXML 节点留在工作线程内,仅返回文本/数组/普通表。
var data,err = thread.invokeAndWait(function(path){
import fsys.openXml.docx;
return fsys.openXml.docx.read(path,{
maxParagraphs=2000;maxTables=50;maxRows=200;maxColumns=50;maxTextBytes=1048576;
});
},io.fullpath(path));
if(data){
var lines=[data.text,""];
for i,item in data.warnings table.push(lines,"[提示] "+item.message+":"+item.partName);
winform.output.text=string.crlf(string.join(lines,'\r\n'),'\r\n');
var status="已读取 "+data.paragraphCount+" 个段落,"+data.tableCount+" 个表格;源文件未修改";
if(data.truncated) status="已按限额截取;"+status;
winform.status.text=status;
}
else {
winform.output.text=err;
winform.status.text="读取失败";
}
winform.button.disabled=false;
return data,err;
}
winform.button.oncommand = function(){
var path=fsys.dlg.open("Word OpenXML 文档|*.docx;*.docm;*.dotx;*.dotm|","选择文档",,winform);
if(path) readFile(path);
}
winform.show();
win.loopMessage();
Markdown 格式