From fb4514e91deffb9955d01b6d7d2688b9f555e993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=98=E4=B8=8D=E5=A6=82=E4=B8=80=E5=8F=AA=E7=8C=AA?= =?UTF-8?q?=E5=A8=81=E6=AD=A6?= <30920712+lanink@users.noreply.github.com> Date: Sat, 13 Dec 2025 10:48:51 +0800 Subject: [PATCH] first commit --- .gitignore | 4 + data.json | 100 +++++++++++++++++++ demo.docx | Bin 0 -> 20628 bytes main.py | 253 +++++++++++++++++++++++++++++++++++++++++++++++ readme.md | 43 ++++++++ requirements.txt | Bin 0 -> 386 bytes rust.jpg | Bin 0 -> 3944 bytes template.docx | Bin 0 -> 18882 bytes 8 files changed, 400 insertions(+) create mode 100644 .gitignore create mode 100644 data.json create mode 100644 demo.docx create mode 100644 main.py create mode 100644 readme.md create mode 100644 requirements.txt create mode 100644 rust.jpg create mode 100644 template.docx diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d017762 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/build/ +/dist/ +.idea +*.spec \ No newline at end of file diff --git a/data.json b/data.json new file mode 100644 index 0000000..725e0db --- /dev/null +++ b/data.json @@ -0,0 +1,100 @@ +[ + { + "key": "{Title}", + "value": "测试标题", + "type": "text" + }, + { + "key": "{文件内容}", + "value": "测试内容内容内容", + "type": "text" + }, + { + "key": "{TableTitle}", + "value": "这是标题", + "type": "text" + }, + { + "key": "{dateTime}", + "value": "2025年11月26日", + "type": "text" + }, + { + "key": "{remark}", + "value": "这个是备注备注备注备注", + "type": "text" + }, + { + "key": "{Test1}", + "value": "2025年11月26日", + "type": "text" + }, + { + "key": "{Test2}", + "value": "2025年11月26日", + "type": "text" + }, + { + "key": "{Test3}", + "value": "2025年", + "type": "text" + }, + { + "key": "{Picture}", + "value": "rust.jpg", + "type": "picture", + "width": 1.25 + }, + { + "key": "{Table}", + "type": "table", + "value": [ + { + "No": "序号", + "Name": "名称", + "Col2": "第一列", + "Col3": "第二列" + }, + { + "No": "1", + "Name": "名称测试1", + "Col2": "列2", + "Col3": "列3" + }, + { + "No": "2", + "Name": "名称测试2", + "Col2": "列2", + "Col3": "列3" + }, + { + "No": "3", + "Name": "名称测试3", + "Col2": "列2", + "Col3": "列3" + }, + { + "No": "4", + "Name": "名称测试4", + "Col2": "列2", + "Col3": "列3" + }, + { + "No": "5", + "Name": "名称测试5", + "Col2": "列2", + "Col3": "列3" + } + ] + }, + { + "key": "{List}", + "type": "list", + "value": [ + "A1队列3的生存性最高,机动时间0s,机动距离0m,综合生存能力为0,隐蔽等级为1,道路性质为0;", + "A2队列3的生存性最高,机动时间0s,机动距离0m,综合生存能力为0,隐蔽等级为1,道路性质为0;", + "A3队列3的生存性最高,机动时间0s,机动距离0m,综合生存能力为0,隐蔽等级为1,道路性质为0;", + "A4队列3的生存性最高,机动时间0s,机动距离0m,综合生存能力为0,隐蔽等级为1,道路性质为0;" + ] + } +] \ No newline at end of file diff --git a/demo.docx b/demo.docx new file mode 100644 index 0000000000000000000000000000000000000000..6c2d1cb1388e4d5620fa282e2bc9f05536145c8f GIT binary patch literal 20628 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

G1S~j3mS`TIB>_m4#QDtNq&mO8 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 0: + template_row = table.rows[0] + for i, cell in enumerate(template_row.cells): + if i < len(fields): # 只需要处理与数据字段对应的列 + if cell.paragraphs: + para = cell.paragraphs[0] + # 保存列格式信息 + column_format = { + 'font_name': '', + 'font_size': None, + 'alignment': para.alignment, + 'bold': False, + 'italic': False, + 'underline': False, + } + + # 优先使用run的格式(如果有) + if para.runs: + run = para.runs[0] + if run.font.name: + column_format['font_name'] = run.font.name + if run.font.size: + column_format['font_size'] = run.font.size + if run.font.bold is not None: + column_format['bold'] = run.font.bold + if run.font.italic is not None: + column_format['italic'] = run.font.italic + if run.font.underline is not None: + column_format['underline'] = run.font.underline + # 保存字体颜色 + if run.font.color.rgb: + column_format['font_color'] = run.font.color.rgb + # 如果没有run,使用样式的格式 + else: + if para.style.font.name: + column_format['font_name'] = para.style.font.name + if para.style.font.size: + column_format['font_size'] = para.style.font.size + if para.style.font.bold is not None: + column_format['bold'] = para.style.font.bold + if para.style.font.italic is not None: + column_format['italic'] = para.style.font.italic + if para.style.font.underline is not None: + column_format['underline'] = para.style.font.underline + + column_formats.append(column_format) + + # 处理每一行数据 + for (i, item) in enumerate(values): + if i < rows: + row = table.rows[i] + else: + row = table.add_row() + # 复制行高 + if i == 0 and rows > 0: + row.height = template_row.height + row.height_rule = template_row.height_rule + + # 处理每一列数据和格式 + for z in range(0, len(fields)): + field = fields[z] + cell = row.cells[z] + + # 设置单元格内容 + if item.get(field) is not None: + cell.text = str(item.get(field)) + else: + cell.text = "" + + # 应用表格格式 + if z < len(column_formats) and cell.paragraphs: + format_info = column_formats[z] + para = cell.paragraphs[0] + + # 设置段落对齐方式 + para.alignment = format_info['alignment'] + + # 设置字体格式 + if para.runs: + run = para.runs[0] + if format_info['font_name']: + run.font.name = format_info['font_name'] + if format_info['font_size']: + run.font.size = format_info['font_size'] + run.font.bold = format_info['bold'] + run.font.italic = format_info['italic'] + run.font.underline = format_info['underline'] + # 设置字体颜色 + if 'font_color' in format_info: + run.font.color.rgb = format_info['font_color'] + + document_file.save(filename_path) + return 0 + + +def main(): + params = get_command_argv_by_sys() + [template, filename, datafile] = params + data = read_data(datafile) + if len(data) == 0: + return 1 + else: + return replace(template, filename, data) + + +if __name__ == '__main__': + print(main()) + diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..0ba8c46 --- /dev/null +++ b/readme.md @@ -0,0 +1,43 @@ +# 读取模板生成报表 + +## 打包 + +1. 打包 + > ```powershell + > pyinstaller -F main.py -n doc_generate.exe + > ``` +1. 使用 + > 在 dist目录下找到可执行文件, 使用命令行调用 + > ```python + > ./doc_generate.exe [模板文件] [生成文件] [数据文件] + > ``` +1. 使用示例 + - Qt + > ```c++ + > QString templatefile = "template/template.docx"; // 模板文件 + > QString generatefile = "Test.docx"; // 生成文件 + > QString datafile = "data/data.json"; // 数据文件 + > QString cmd = QString("doc_generate %1 %2 %3").arg(templatefile, generatefile, datafile); + > QProcess process; + > process.start(cmd); + > process.waitForFinished(); + > QString output = process.readAllStandardOutput(); + > qDebug() << output; + > ``` + +## 注意 + +1. 模板文件 使用相对位置,即相对**doc_generate**可执行文件的位置 +1. 生成文件 生成的文件都在**doc_generate**所在位置 +1. 数据文件 使用相对位置,即相对**doc_generate**可执行文件的位置 +2. 数据文件中若有图片路径,则图片路径也应是相对位置,即图片相对**doc_generate**可执行文件的位置 + +## 返回值说明 + +| 值 | 说明 | +|:-:|:-------:| +| 0 | 正常 | +| 1 | 数据内容不正确 | +| 2 | 模板文件不正确 | + + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..473eac504b09c2ab0fe795693311e67d113e0168 GIT binary patch literal 386 zcmaKo%MOAt5Jm6W#7}`xP+9pc2C*UmfzT$v&#QN)_*j{SS#ZxxPv`k4(88m_hynv{ zIPxTjVUV-#u*HVNj617jd;ZNdmtXrj?h7V0 p%V;Z;Jr=&%@}Bpe#4XdQAq!hLk(o(bnmA4nqtGLpG5YqfpBGKWJO}^) literal 0 HcmV?d00001 diff --git a/rust.jpg b/rust.jpg new file mode 100644 index 0000000000000000000000000000000000000000..97d9ec1c6fa6fb18c9ecd5881733ab3d3dc365c8 GIT binary patch literal 3944 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 KzbVzTx&Hvehc#ya literal 0 HcmV?d00001 diff --git a/template.docx b/template.docx new file mode 100644 index 0000000000000000000000000000000000000000..333017dfb0e351583090d2d98e713c78b3e0b62e GIT binary patch literal 18882 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 literal 0 HcmV?d00001