吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5533|回复: 46
收起左侧

[Python 原创] DeepSeek输出文档转WORD小工具

  [复制链接]
zxlrock 发表于 2025-4-30 13:20
本帖最后由 zxlrock 于 2025-5-13 23:38 编辑

在平时运用DeepSeek等大模型时,想把输出结果保存到word文件,但是由于生成的大都是MD格式,拷贝进word会很乱。所以借助VS+cilne编程小白门槛降低了。可真的变成生产力。
image.png
更新下载链接(永久有效):通过网盘分享的文件:DeepSeek文档转换.zip
链接: https://pan.baidu.com/s/1SreXw20-OyunsmHwxF0hOA?pwd=qe54 提取码: qe54

免费评分

参与人数 5吾爱币 +4 热心值 +4 收起 理由
minghoukuan + 1 + 1 我很赞同!
雪洗中关村 + 1 + 1 我很赞同!
wxl135 + 1 我很赞同!
pyjiujiu + 1 用心讨论,共获提升!
yzmb8456 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| zxlrock 发表于 2025-4-30 13:23
看在我是完全小白的份上,我只管能实现效果,至于里面代码好不好,有没有很多废话我真的看不懂。请大家见谅!
 楼主| zxlrock 发表于 2025-4-30 13:21
[Python] 纯文本查看 复制代码
import tkinter as tk
from tkinter import scrolledtext, filedialog, messagebox
from docx import Document
from docx.shared import Pt, RGBColor
from docx.enum.text import WD_LINE_SPACING
from docx.oxml.ns import qn
import re
import os

def browse_output_path():
    """打开文件对话框选择保存路径"""
    file_path = filedialog.asksaveasfilename(
        defaultextension=".docx",
        filetypes=[("Word文档", "*.docx"), ("所有文件", "*.*")],
        initialfile="deepseek内容转换导出.docx"
    )
    if file_path:
        output_path_var.set(file_path)

def clear_content():
    """清除输入框内容"""
    input_text.delete(1.0, tk.END)
    status_var.set("内容已清除")

def set_chinese_font(run, font_name, size_pt, bold=False):
    """设置中文字体格式,简化重复代码"""
    run.font.name = font_name
    run._element.rPr.rFonts.set(qn('w:eastAsia'), font_name)
    run.font.size = Pt(size_pt)
    run.font.color.rgb = RGBColor(0, 0, 0)  # 设置文字颜色为黑色
    if bold:
        run.font.bold = True

def convert_to_word():
    """将输入框中的Markdown内容转换为Word文档"""
    try:
        # 获取输入内容
        content = input_text.get(1.0, tk.END)
        if not content.strip():
            messagebox.showwarning("警告", "请先输入内容再转换")
            return
        
        # 创建Word文档
        doc = Document()
        
        # 按段落分割并处理格式
        paragraphs = content.split('\n')
        i = 0
        while i < len(paragraphs):
            para = paragraphs[i]
            
            # 跳过只包含"---"的行
            if para.strip() == "---":
                i += 1
                continue
                
            # 处理标题
            if para.startswith('#'):
                level = para.count('#')
                # 移除#号和**标记
                clean_text = para.strip('# ').replace('**', '')
                
                # 添加标题并设置格式
                heading = doc.add_heading('', level=level)
                run = heading.add_run(clean_text)
                
                # 根据标题级别设置不同格式
                if level == 1:  # 主标题:黑体四号加粗
                    set_chinese_font(run, '黑体', 14, bold=True)
                else:  # 二级及以下标题:加粗宋体小四号
                    set_chinese_font(run, '宋体', 12, bold=True)
                
                i += 1
                continue
            
            # 处理表格
            if para.startswith('|') and i + 1 < len(paragraphs) and paragraphs[i + 1].startswith('|'):
                # 收集表格行
                table_rows = []
                while i < len(paragraphs) and paragraphs[i].startswith('|'):
                    # 跳过分隔行
                    if '---' in paragraphs[i] and all(c == '-' or c == '|' or c == ' ' for c in paragraphs[i]):
                        i += 1
                        continue
                    
                    # 提取单元格内容
                    cells = [cell.strip() for cell in paragraphs[i].split('|')[1:-1]]
                    table_rows.append(cells)
                    i += 1
                
                if table_rows:
                    # 创建表格
                    table = doc.add_table(rows=len(table_rows), cols=len(table_rows[0]))
                    table.style = 'Table Grid'
                    
                    # 填充表格内容并设置格式
                    for row_idx, row in enumerate(table_rows):
                        for col_idx, cell_content in enumerate(row):
                            # 移除Markdown格式标记
                            clean_content = re.sub(r'\*\*(.*?)\*\*', r'\1', cell_content)
                            
                            # 设置单元格格式
                            cell = table.cell(row_idx, col_idx)
                            cell.text = ""  # 清空单元格文本
                            paragraph = cell.paragraphs[0]
                            run = paragraph.add_run(clean_content)
                            
                            # 设置表格内文字格式:宋体小四号黑色
                            set_chinese_font(run, '宋体', 12)
                            
                            # 设置段落行距为1.5倍
                            paragraph.paragraph_format.line_spacing = 1.5
                
                continue
            
            # 处理普通段落(非空行)
            if para.strip():
                # 移除Markdown格式标记
                clean_text = re.sub(r'\*\*(.*?)\*\*', r'\1', para)
                
                # 创建段落并设置格式
                p = doc.add_paragraph()
                run = p.add_run(clean_text)
                
                # 设置正文格式:宋体小四号黑色
                set_chinese_font(run, '宋体', 12)
                
                # 设置段落行距为1.5倍
                p.paragraph_format.line_spacing = 1.5
            
            i += 1
        
        # 保存文件
        output_path = output_path_var.get()
        doc.save(output_path)
        
        status_var.set(f"转换成功!文件已保存至: {output_path}")
        messagebox.showinfo("成功", f"文档已成功转换并保存至:\n{output_path}")
        
    except Exception as e:
        status_var.set(f"转换失败: {str(e)}")
        messagebox.showerror("错误", f"转换过程中发生错误:\n{str(e)}")

# 创建主窗口
root = tk.Tk()
root.title("DeepSeek文档转换器")
root.geometry("800x800")

# 创建顶部框架,包含标题和帮助按钮
top_frame = tk.Frame(root)
top_frame.pack(fill=tk.X, padx=20, pady=10)

def show_help():
    """显示帮助信息"""
    help_text = """
DeepSeek Markdown 转 Word 文档工具使用指南

基本介绍:
本工具用于将DeepSeek生成的Markdown内容转换为格式化的Word文档,保留原有结构并应用统一的排版格式。

使用步骤:
1. 从DeepSeek复制生成的Markdown内容
2. 粘贴到文本框中
3. 设置保存路径(可选,默认保存在当前目录)
4. 点击"转换为Word文档"按钮
5. 查看转换结果,成功后会显示保存路径

支持的格式:
- 标题(#、##、###等)
- 表格(|分隔的表格)
- 加粗文本(**文本**)
- 普通段落文本

排版格式:
- 主标题:黑体四号(14磅)加粗
- 二级及以下标题:宋体小四号(12磅)加粗
- 正文和表格内容:宋体小四号(12磅)
- 所有文字颜色:黑色
- 段落行距:1.5倍
- 表格样式:网格线

常见问题:
1. 问题:转换后表格格式混乱
   解决:确保原始Markdown表格格式正确,包含表头和分隔行

2. 问题:中文字体显示不正确
   解决:确保系统安装了宋体和黑体字体

3. 问题:文档无法保存
   解决:检查保存路径是否有写入权限,或尝试更改保存位置
"""
    help_window = tk.Toplevel(root)
    help_window.title("使用帮助")
    help_window.geometry("600x500")
    help_window.resizable(True, True)
    
    # 添加帮助文本
    help_text_widget = scrolledtext.ScrolledText(
        help_window,
        wrap=tk.WORD,
        font=("微软雅黑", 10),
        padx=15,
        pady=15
    )
    help_text_widget.pack(fill=tk.BOTH, expand=True)
    help_text_widget.insert(tk.END, help_text)
    help_text_widget.configure(state="disabled")  # 设置为只读
    
    # 添加关闭按钮
    close_button = tk.Button(
        help_window,
        text="关闭",
        command=help_window.destroy,
        font=("微软雅黑", 10),
        padx=10
    )
    close_button.pack(pady=10)

# 创建标题标签(左对齐)
title_label = tk.Label(
    top_frame, 
    text="DeepSeek Markdown 转 Word 文档工具", 
    font=("微软雅黑", 16, "bold")
)
title_label.pack(side=tk.LEFT, pady=5)

# 创建帮助按钮(右对齐)
help_button = tk.Button(
    top_frame,
    text="帮助",
    command=show_help,
    font=("微软雅黑", 10),
    bg="#f0f0f0",
    padx=10,
    pady=2
)
help_button.pack(side=tk.RIGHT, pady=5)

# 创建说明标签
instruction_label = tk.Label(
    root,
    text="请将DeepSeek生成的Markdown内容粘贴到下方文本框中:",
    font=("微软雅黑", 10)
)
instruction_label.pack(anchor="w", padx=20, pady=(10, 5))

# 创建输入文本框
input_text = scrolledtext.ScrolledText(
    root, 
    wrap=tk.WORD, 
    font=("微软雅黑", 10),
    height=20
)
input_text.pack(fill=tk.BOTH, expand=True, padx=20, pady=10)

# 创建输出路径框架
output_frame = tk.Frame(root)
output_frame.pack(fill=tk.X, padx=20, pady=10)

# 创建输出路径标签
output_label = tk.Label(
    output_frame,
    text="输出文件路径:",
    font=("微软雅黑", 10)
)
output_label.pack(side=tk.LEFT, padx=(0, 10))

# 创建输出路径输入框
output_path_var = tk.StringVar()
output_path_var.set(os.path.join(os.getcwd(), "deepseek内容转换导出.docx"))
output_entry = tk.Entry(
    output_frame,
    textvariable=output_path_var,
    width=50,
    font=("微软雅黑", 10)
)
output_entry.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=(0, 10))

# 创建浏览按钮
browse_button = tk.Button(
    output_frame,
    text="浏览...",
    command=browse_output_path,
    font=("微软雅黑", 10)
)
browse_button.pack(side=tk.RIGHT)

# 创建按钮框架
button_frame = tk.Frame(root)
button_frame.pack(fill=tk.X, padx=20, pady=10)

# 创建清除按钮
clear_button = tk.Button(
    button_frame,
    text="清除内容",
    command=clear_content,
    font=("微软雅黑", 10)
)
clear_button.pack(side=tk.LEFT, padx=5)

# 创建转换按钮
convert_button = tk.Button(
    button_frame,
    text="转换为Word文档",
    command=convert_to_word,
    font=("微软雅黑", 10, "bold"),
    bg="#4a6fa5",
    fg="white",
    padx=10,
    pady=5
)
convert_button.pack(side=tk.RIGHT, padx=5)

# 创建状态栏
status_var = tk.StringVar()
status_var.set("准备就绪")
status_bar = tk.Label(
    root,
    textvariable=status_var,
    relief=tk.SUNKEN,
    anchor=tk.W,
    font=("微软雅黑", 9)
)
status_bar.pack(side=tk.BOTTOM, fill=tk.X)

# 启动主循环
root.mainloop()

免费评分

参与人数 1吾爱币 +5 热心值 +1 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

 楼主| zxlrock 发表于 2025-4-30 13:25
本帖最后由 zxlrock 于 2025-5-13 23:39 编辑

打包成exe了,也不到,就十来兆。
通过网盘分享的文件:DeepSeek文档转换.zip
链接: https://pan.baidu.com/s/1SreXw20-OyunsmHwxF0hOA?pwd=qe54 提取码: qe54

免费评分

参与人数 1热心值 +1 收起 理由
茶城兄弟 + 1 热心回复!

查看全部评分

mycc 发表于 2025-4-30 17:39
嗯,收下了,挺好
woojun 发表于 2025-4-30 18:30
这个小工具不错,感谢了!
yaoshun3 发表于 2025-4-30 18:42
我懒,加一句“用htm的格式输出,需要有能直接下载word文档的功能。并且能直接下载word文件”就OK了
yzmb8456 发表于 2025-4-30 20:39
感谢楼主分享
52PJ070 发表于 2025-4-30 20:57
不错,感谢楼主分享!
forever5678 发表于 2025-5-3 10:30
不错的软件,收藏了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-5-24 19:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表