| name | wps-batch-convert |
| description | 文档批量格式转换。把一个文件夹里的Word全转文本、Excel全导出CSV、
Markdown转Word,支持docx/txt/xlsx/csv/md等格式批量互转,一次搞定。
用于帮助用户批量转换文档格式。当用户提到批量转换、格式转换、导出时触发。
Batch converts documents between formats (docx/pdf/xlsx/csv/md).
|
| license | MIT |
| user-invocable | true |
| argument-hint | [源格式] [目标格式] [文件/文件夹] |
| allowed-tools | Read, Grep, Glob, Bash, Write, Edit |
| metadata | {"author":"BWKYD","title":"文档批量转换","description_zh":"把文件夹里的docx转txt、xlsx导出csv等,支持多种格式批量互转","tags":["转换","批量","PDF","格式","WPS"],"version":"1.0.1","license":"MIT"} |
批量格式转换工具
一个文件夹 → 全部转换 → 输出到目标文件夹。
When to Use
- 批量将Word转PDF
- Excel批量导出CSV
- Markdown转Word
- 整个文件夹的格式转换
- 用户说"批量转PDF""全部导出为CSV"
When NOT to Use
- PDF内容提取 → 使用
wps-pdf-extract
- PDF合并拆分 → 使用
wps-pdf-merge-split
支持的转换路径
| 源格式 | 目标格式 | 工具 |
|---|
| .docx | .pdf | python-docx + reportlab 或 WPS CLI |
| .docx | .txt | python-docx |
| .xlsx | .csv | openpyxl |
| .csv | .xlsx | openpyxl |
| .pptx | .pdf | python-pptx + WPS CLI |
| .md | .docx | markdown + python-docx |
| .txt | .docx | python-docx |
工作流程
Step 1: 确认转换需求
Step 2: 批量转换
from docx import Document
from openpyxl import load_workbook
import csv
import os
import glob as glob_mod
import subprocess
class BatchConverter:
"""批量格式转换器"""
@staticmethod
def docx_to_txt(docx_path, output_path=None):
"""Word转纯文本"""
doc = Document(docx_path)
text = '\n'.join(para.text for para in doc.paragraphs)
if not output_path:
output_path = os.path.splitext(docx_path)[0] + '.txt'
with open(output_path, 'w', encoding='utf-8') as f:
f.write(text)
return output_path
@staticmethod
def xlsx_to_csv(xlsx_path, output_path=None, sheet_name=None):
"""Excel转CSV"""
wb = load_workbook(xlsx_path, read_only=True)
ws = wb[sheet_name] if sheet_name else wb.active
if not output_path:
output_path = os.path.splitext(xlsx_path)[0] + '.csv'
with open(output_path, , newline=, encoding=) f:
writer = csv.writer(f)
row ws.iter_rows(values_only=):
writer.writerow(row)
wb.close()
output_path
():
openpyxl Workbook
openpyxl.styles Font, PatternFill
wb = Workbook()
ws = wb.active
(csv_path, , encoding=) f:
reader = csv.reader(f)
row_idx, row (reader, ):
col_idx, val (row, ):
ws.cell(row=row_idx, column=col_idx, value=val)
row_idx == :
col_idx (, (row) + ):
ws.cell(row=, column=col_idx).font = Font(bold=)
output_path:
output_path = os.path.splitext(csv_path)[] +
wb.save(output_path)
output_path
():
doc = Document()
(md_path, , encoding=) f:
line f:
line = line.rstrip()
line.startswith():
doc.add_heading(line[:], level=)
line.startswith():
doc.add_heading(line[:], level=)
line.startswith():
doc.add_heading(line[:], level=)
line.startswith():
doc.add_paragraph(line[:], style=)
line.strip():
doc.add_paragraph(line)
output_path:
output_path = os.path.splitext(md_path)[] +
doc.save(output_path)
output_path
():
output_dir:
output_dir = os.path.join(source_dir, )
os.makedirs(output_dir, exist_ok=)
converter_map = {
(, ): BatchConverter.docx_to_txt,
(, ): BatchConverter.xlsx_to_csv,
(, ): BatchConverter.csv_to_xlsx,
(, ): BatchConverter.md_to_docx,
}
func = converter_map.get((source_ext, target_ext))
func:
ValueError()
files = glob_mod.glob(os.path.join(source_dir, ))
results = []
f files:
basename = os.path.splitext(os.path.basename(f))[]
out = os.path.join(output_dir, )
func(f, out)
results.append(out)
results
Step 3: 交付
- 转换后的文件输出到指定目录
- 报告转换结果(成功/失败数量)
- 提示不支持的转换路径和替代方案
示例
/wps-batch-convert 把docs文件夹里所有docx转成txt
/wps-batch-convert 把所有xlsx导出为csv
/wps-batch-convert 把notes.md转成Word文档
/wps-batch-convert reports文件夹里的所有csv转成xlsx