精华内容
下载资源
问答
  • windows下,使用python 将Excel中数据批量导出到Word模板中生成新的文件
  • 下面这个直接用是不行的,要修改一下几个地方 docxurl:指的是你存放docx文件的目录 ...#操作excel文件模块 import pandas as pd from pandas import DataFrame #接受一个文件目录,返回一个包含文件名的数组 def re
  • 本程序编写环境.NET 4.0、 VS2010,语言为C#,通过引用... [字段1:联系人] [字段2:联系电话] 根据检测出的字段编辑Word模板文件,添加相应字段的书签到模板文件,然后选择模板文件,最后批量生成Word文档到指定文件夹。
  • 可以使用word中的邮件合并功能(邮件合并这个翻译有点怪,原因是本来这个功能是为批量发送邮件用的,如果叫“批量引用表格数据”大概会更好理解点)。这里列出2个注意点,1是所引用的excel数据的第一行必须是项目行。2...

    可以使用word中的邮件合并功能(邮件合并这个翻译有点怪,原因是本来这个功能是为批量发送邮件用的,如果叫“批量引用表格数据”大概会更好理解点)。这里列出2个注意点,1是所引用的excel数据的第一行必须是项目行。2是在wps里面,“邮件合并”就是在“引用”中的“邮件”。3是如果要导出独立的表格需要先设置word表格的标题样式。具体可以参见B站教程《【灰】用“邮件合并”功能提升10倍不止的高效生产力》

    8bd6d2c1d5ef9c4a4aa8a579ab331609.png
    展开全文
  • Java通过POI读取Excel遍历数据,根本word模板批量生成word文档,demo可运行,可根据需求修改
  • Python批量处理Excel文件信息替换Word模板原由和思路工具准备1. 前期处理1.1 数据处理1.2 模板处理2. 编写代码2.1 使用Pycharm新建项目ExcelToWord2.2 新建ETW.py主程序文件并安装相应库2.3 主要代码块解析3. 打包...

    原由和思路

    经常上级会下发一些word表格让我们基层填写,涉及人数较多,表格下发给个人之后,格式啊字体啊大小啊都不统一,每次还得重复校对,我就想能不能创建一个大型Excel数据库完成平时信息采集和更新,一次性导入下发的word表格中,并生成新的文件。
    使用Excel的原因主要是维护方便,并不是所有人都懂数据库操作,并且制作较为麻烦,尤其是遇到新加字段的时候,工作量大,不如就使用Excel存储数据,维护简单,更新及时。
    现在就再想,我码个程序,输入我需要变更的数据列名,替换掉Word模板当中的相应内容,并另存为以名称命名的新文件。但由于数据格式多,所以要求EXCEL处理的时候全部都是文本格式,这样不容易出错,如果转换为.csv格式会更加简洁。

    工具准备

    Python 3.7 (32bit)
    Pycharm
    Windows7 (64bit)
    Office 2010

    1. 前期处理

    1.1 数据处理

    先看一下我的数据:
    数据
    第一步,将Excel所有单元格设置为文本后,检查容易出错的几个类型,日期,数字,金额等;
    第二步,将第一行全部改为英文描述,利于后期Python编译查找速度,及时不需要的也最好一次性都编译好,以免后期需要再重复工作;
    第三步,另存为 csv 格式文件,一定选逗号分隔的,如图:
    另存为CSV

    1.2 模板处理

    模板处理使用的是 jinja2 标签 {{xxx}}的替换模式,将所需要的替换的位置用数据的列名称替换,如图:
    模板处理
    这里替换标签里面的内容一定要和数据源的一致,并且和后面程序中的一致。

    2. 编写代码

    编写前先给大家看一下最后的程序样式,以便有个宏观印象。
    在这里插入图片描述

    2.1 使用Pycharm新建项目ExcelToWord

    新建项目
    使用32位Python的原因是兼容性,64位的Python打包的程序只能64位系统使用,32位的Python打包的程序可以在32位、64位系统上使用。

    2.2 新建ETW.py主程序文件并安装相应库

    主程序文件
    本程序一共需要额外安装3个库
    pywin32(32位系统打包程序必须装)
    pyinstaller(打包程序)
    docxtpl(模板替换)
    打开Pycharm的File->Settings
    在这里插入图片描述
    点击加号,依次添加3个额外库。
    在这里插入图片描述

    2.3 主要代码块解析

    引用头:

    from tkinter import * #tkinter-python内部GUI库
    from tkinter import filedialog #tkinter-python内部GUI库获取文件绝对路径
    import tkinter.messagebox #tkinter-python内部GUI库弹出消息库
    import csv #数据CSV格式处理库
    from docxtpl import DocxTemplate #Word模板替换库
    

    先介绍一下docxtpl Word模板替换 最简单的使用方法:

    tpl = DocxTemplate('leave_temp.docx') 
    #括号后是相对路径,我们采取选取绝对路径方式
    # 需要替换内容以key:value的方式进行更换
    context = {
       'who': '程旭阳'
    }
    
    tpl.render(context)
    #渲染替换
    tpl.save('leave.docx')
    #另存为
    

    本文中需要替换的是 No Name Age Id Addr
    我们这里考虑,以迭代的方式一个文件一个文件生成,context字典的键我们人工输入,这样有一个好处就是不需要处理多余的数据源数据,可以指定内容替换。那么久需要获取输入框的内容,也就是tkinter->entry组件,我们先建立一个Entry()组件和Button()按钮完成,输入需要更换N个变量,点击确定按钮后会更新出N个输入框来供我们填写。

    #创建新的输入栏,输入变量名称
    def newentry():
        for i in range(int(replacenumber.get())):
            entry_x = 'entry_' + str(i)#构造变量名称
            entries.append(entry_x)#储存到变量列表中方便查询
            if i<20 :
                entries[i] = Entry(frm21, width=18)
                entries[i].pack(side=TOP, expand=True, fill=X)
            elif i<40:
                entries[i] = Entry(frm22, width=18)
                entries[i].pack(side=TOP, expand=True, fill=X)
            else:
                entries[i] = Entry(frm23, width=18)
                entries[i].pack(side=TOP, expand=True, fill=X)
                #
    

    replacenumber.get()会获取输入框内输入了几个需要替换的变量,之后生成。
    其中entry_x是传递变量名称的函数,然后储存到列表 entries中去
    e.g. 如果是5,那么会创造5个变量,分别是
    entry_0、entry_1、entry_2、entry_3、entry_4

    Entry()和其他的组件的用法请参看https://www.jianshu.com/p/c9fb28367015
    【由于tkinter没有自适应布局,只好选绝对布局的方式,摆放各个部件,这里只允许创建最多60个输入框,你也可以更改】

    替换的程序主要内容:

    def load():
        filepath = filedialog.askopenfilename()    #获取数据源文件绝对地址
        with open(filepath,'r',encoding='gbk') as f:
            reader = csv.DictReader(f,dialect='excel')  #获取数据源内容
            #使用csv不用pandas的原因是含pandas库打包exe程序出错
    
    		#遍历每一行将数据替换给新的Word
            for row in reader:                       
               #创建完整替换context字典,利用原先的列表
                for entry in entries:
                    context[entry.get()] = row[entry.get()]
                 #写好输出文件夹的路径,且以 Name 一列命名,也可以使用其他的命名
                outputpath = 'output/'+row['Name']+'.docx'    
                # 替换模板,地址为获取的模板绝对地址,docxpath是一储存绝对路径信息label
                tpl = DocxTemplate(docxpath['text'])
                tpl.render(context)
                tpl.save(outputpath)
            tkinter.messagebox.showinfo('成功', '已替换所有模板!')
            #完成后弹窗提示
    

    最后就是GUI tkinter布局的问题了,难度不大,大家稍微看了上面的链接就懂布局了。
    最后我粘贴一下全部代码,解释内容较少

    from tkinter import *
    from tkinter import filedialog
    import tkinter.messagebox
    import csv
    from docxtpl import DocxTemplate
    
    #选取模板
    def seltpl():
        tplpath = filedialog.askopenfilename()
        label['text'] = '4.已选择模板,请选择数据源CSV'
        docxpath['text'] = tplpath
    
    #读取CVS文件绝对路径后保存数据到df中
    def load():
        filepath = filedialog.askopenfilename()
        with open(filepath,'r',encoding='gbk') as f:
            reader = csv.DictReader(f,dialect='excel')
    
            for row in reader:
                #创建完整替换context字典
                for entry in entries:
                    context[entry.get()] = row[entry.get()]
                outputpath = 'output/'+row['Name']+'.docx'
                # 替换模板
                tpl = DocxTemplate(docxpath['text'])
                tpl.render(context)
                tpl.save(outputpath)
            tkinter.messagebox.showinfo('成功', '已替换所有模板!')
    
    #创建新的输入栏,输入变量名称
    def newentry():
        for i in range(int(replacenumber.get())):
            entry_x = 'entry_' + str(i)#构造变量名称
            entries.append(entry_x)#储存到变量列表中方便查询
            if i<20 :
                entries[i] = Entry(frm21, width=18)
                entries[i].pack(side=TOP, expand=True, fill=X)
            elif i<40:
                entries[i] = Entry(frm22, width=18)
                entries[i].pack(side=TOP, expand=True, fill=X)
            else:
                entries[i] = Entry(frm23, width=18)
                entries[i].pack(side=TOP, expand=True, fill=X)
    
    #主窗口top实例化
    top = Tk()
    top.geometry("400x600")
    top.title("使用前必须阅读说明书")
    context = {} 
    entries = []
    
    #frm1
    frm1 = Frame()
    frm1.pack(side=TOP)
    label2 = Label(frm1, text='1.请输入需要替换几个变量', font=("黑体", 20), wraplength=400, justify="left", anchor="nw")
    label2.pack(side=TOP, expand=YES, fill=X)
    #frm11\frm12
    frm11 = Frame(frm1)
    frm11.pack()
    replacenumber = Entry(frm11)
    replacenumber.pack(side=LEFT, fill=X, expand=YES)
    Button(frm11, text='确定', command=newentry).pack(side=LEFT, fill=X, expand=YES)
    
    #frm2
    frm2 = Frame()
    frm2.pack(side=TOP)
    label3 = Label(frm2, text='2.请将变量名称填写在下列输入框框内', font=("黑体", 16), wraplength=400, justify="left", anchor="nw")
    label3.pack(side=TOP, expand=YES, fill=X)
    frm21 = Frame(frm2)
    frm21.pack(side=LEFT)
    frm22 = Frame(frm2)
    frm22.pack(side=LEFT)
    frm23 = Frame(frm2)
    frm23.pack(side=LEFT)
    frm3 = Frame()
    frm3.pack(side=BOTTOM)
    
    #储存模板位置标签栏(不显示)
    docxpath =  Label(top, text='', bg="pink", font=("黑体", 20), wraplength=1, justify="left", anchor="nw")
    
    #frm3提示信息标签栏
    label = Label(frm3, text='3.请先选择需要替换的DOCX模板', font=("黑体", 20), wraplength=400, justify="left", anchor="nw")
    label.pack(side=TOP)
    Button(frm3, text='3.选择模板', command=seltpl).pack(side=LEFT, fill=X, expand=YES)
    Button(frm3, text='4.选择数据源并开始替换', command=load).pack(side=LEFT, fill=X, expand=YES)
    
    #启动程序
    top.mainloop()
    

    3. 打包程序

    在Pycharm 的终端Terminal 输入
    pyinstaller -F -w ETK.py

    在这里插入图片描述
    完成打包exe文件,输出到项目地址dist文件夹中,此时人工添加output文件夹(没来及做,有时间的可以自己代码生成)
    打开ETK.exe文件
    输入变量5个,确定后输入变量名称,注意一定要写正确
    在这里插入图片描述
    点击选择模板,选择好模板文件 .docx,然后点击选择数据源CSV,之后就会弹窗说替换完成,我们可以去output文件夹下面去看一下。
    在这里插入图片描述
    确实生成了新的文件,打开其中一个。
    在这里插入图片描述
    已完成替换。

    心得体会

    1. pyinstaller打包pandas 和 numpy时候都有点问题,我还没解决,网上有人解决了,我这里还是用了旧一点的 csv库。
    2. GUI界面美化没有做,网上很多好看的GUI用的Qt,我这边因为功能比较简单就没有美化,主要还是分享和记录第一次发博客。
    3. 很多地方还可以优化,希望大家能多多提意见,共同进步。
    展开全文
  • 9999))+title document.save(title+’.docx’) excel = xlrd.open_workbook(‘地标号.xlsx’) table = excel.sheet_by_index(0) nows = table.nrows for i in range(nows): title = table.cell(i, 2).value type1 = ...

    一、需要扩展库

    需要提前安装第三方库,分别为:python-docx,xlrd。
    在运行中输入 cmd 进入命令控制
    安装方法:pip install python-docx
    pip install xlrd
    输入pip list,查看是否安装成功在这里插入图片描述

    ``
    from docx import Document
    import xlrd
    import random

    def change_data(title, type1, num):
    document = Document(‘地标号.docx’)
    for i in document.paragraphs:
    i.text = i.text.replace(‘xxx’, title)
    i.text = i.text.replace(‘x00’, type1)
    i.text = i.text.replace(‘x11’, num)
    title = str(random.randint(1,9999))+title
    document.save(title+’.docx’)

    excel = xlrd.open_workbook(‘地标号.xlsx’)
    table = excel.sheet_by_index(0)
    nows = table.nrows

    for i in range(nows):
    title = table.cell(i, 2).value
    type1 = str(table.cell(i, 7).value)
    num = str(int(table.cell(i, 8).value))
    change_data(title, type1, num)

    
    
    展开全文
  • 不需大量开发,实现简单功能,希望对大家有帮助。
  • 用Python将Word中的内容写入Excel
  • Excel表格某些字段批量导入word

    千次阅读 2018-05-11 11:52:13
    打开word2013,邮件-开始邮件合并-邮件合并分步向导-右侧点击下一步下一步到选择收件人那一步-点击浏览-选择需要导入Excel文件-下一步-点击其他项目-...注意:假设Excel中有50行数据,只需要在word中建立一个模板...

    打开word2013,邮件-开始邮件合并-邮件合并分步向导-右侧点击下一步下一步到选择收件人那一步-点击浏览-选择需要导入的Excel文件-下一步-点击其他项目-光标停在word中需要导入的地方-点击插入-点击插入旁边的关闭-全部完成以后点击完成并合并-点击编辑单个文档-系统会自动生成一个新的word文件。

    注意:假设Excel中有50行数据,只需要在word中建立一个模板,新生成的word文件会自动生成50个内容不一样的。

    展开全文
  • 用VBA解决思路(以批量导入word作为例子) 1、设置word模板(标识要替换的位置) 2、设置excel原数据(找到替换的内容) 3、复制word模板,修改文件名,替换里边的内容 4、循环2和3步骤,工作...
  • 最近工作需要做一个excelword文档的导出功能,在指定的模板上,去数据库查询填充数据其中,最后把填充好数据的一批word或者excel文件压缩成zip包,然后提供给用户下载 在此将整个操作流程做一下笔记 1.word文档模板...
  • Python 读取excel批量生成word模板 问题-来源 前几天,我姐遇见了一个难题:需要从excel表格中不断复制数据到word模板中,相当繁琐,询问我有没有解决的办法。于是我百度了一下,借鉴了相关博主的博文,结合自己的...
  • 案例1——word模板为表格 ...如何把excel表格中的内容批量填写到word模板中 https://jingyan.baidu.com/article/870c6fc322b798f13ee4be7e.html 最终效果 这种方法的就是 把每一页word生成一个文件 ...
  • 论文高级排版的操作顺序 页面大小、页面边距设置 设置不同级别标题样式,然后在多级列表中对样式序列修改...邮件合并功能(Excel表中指定列数据插入到Word模板指定位置,批量生成Word) List item List it...
  • 通过Python自动化办公把提取word中的表格,填充到到excel当中. 首先通过for循环提取word当中的表格的每个单元格的内容,然后指定excel,进行批量填充
  • 1、先将本地修改存储起来 ...2、pull内容 暂存了本地修改之后,就可以pull了。 git pull 3、还原暂存的内容 git stash pop stash@{0} 系统提示如下类似的信息: Auto-merging c/environ.cCONFLICT (content): Merge...
  • (除非单位人很少,否则会很头疼)那么,我们怎么利用EXCEL表格快速地把姓名和号码等信息导入到手机通讯录中?请看以下教程:1.在手机和电脑上下载某助手。2.打开手机上的某助手扫二维码或用USB数据线进行连接。手机端...
  • 感谢@ 不想成为大佬的菜鸟不是好菜鸟,他的文章给了我启发,我直接复制了他的代码,果然不行。但是他的思想是对的,我就用我仅有的python基础套了他的代码和思想,于是有了...#打开excel文件 wb = xlrd.open_workboo
  • 所以一开始就要做好模板设计(如下所示) 方便后面建立电子数据库 从而使得其他人可以迅速地搜索到相关记录 据说“人生苦短,我用python” 所以决定用python从docx文档中提取文件头的信息 然后把信息更新到一个xls...
  • 用VBA实现批量数据填充到word模板

    千次阅读 2019-09-14 08:02:45
    将数据库数据取出,批量填充到预先画好的word模板,输出用于打印的word文档。 限制 ie浏览器,本机安装了word。 问:那么多可以选择的,jacob, iText, 国内大量的在线编辑控件,为什么非得用...
  • 有时候因工作需要,会需要往Word文档里填入诸如姓名、性别、成绩之类的固定数据,但这些数据却在Excel表格里,且相同的Word内容需要输入这种数据成千上万。比如像学生录取通知书、准考证、奖状、座位图、请帖、单份...
  • 一个一个填入word模板中,如果需要录入很多人的数据,源数据格式如下图2所示,则一个个录入是不现实的,word有更简单的方法。 2.使用说明:根据excel内容按照word给定的模板录入数据 二 使用方法 1.数据源:...
  • 批量替换word/excel文件的内容(c#)

    热门讨论 2010-03-17 17:29:48
    实现批量替换word/excel文件的内容。 ·可以对多个词条进行一次性替换。 ·对加密、已打开的、只读文档跳过处理。 ·替换后黄底红字显示。 ·支持大小写匹配。 ·导入/导出替换配置文件。 ·日志记录替换情况,多看...
  • 数据导入 public static DataTable ExeclToDataTable ( string Path) { try { DataTable dt = new DataTable(); Aspose.Cells.Workbook workbook = new Workbook(); workbook.Open(Path); ...
  • 如何将Excel数据导入MATLAB中?从excel导入,可以用xlsread()函数。例如:A=xlsread('C:\Users\Administrator\Desktop\07-29预.xlsm','Sheet3','E2:G10')将矩阵A(数据)写入目标文件夹(C:\Users\Administrator\...
  • 对于word中需要插入大量类型相似的图片,使用excel插入图片、标题、题注等内容是非常方便的,先使用excel编辑好各个图片对应的标题、题注。 excel中工作表第一列为图片的标题,第二列为图片路径。如下图所示: 使用...
  • 目标最近实验室里成立了一个计算机兴趣小组倡议大家多把自己解决问题的经验记录并分享就像在CSDN写博客一样虽然刚刚起步但考虑到后面此类经验记录的资料会越来越多所以一开始就要做好模板设计(如下所示)方便后面...
  • Excel数据对应写入已做好的Word模板的指定位置(分发)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,863
精华内容 745
关键字:

word模板批量导入excel内容

友情链接: jsp_servlet.zip