tiancaizcx 发表于 2022-8-2 22:42:43

如何实现将excel里的数据写入word模板当中

比如excel里面有名字、身份证号、地址、电话
对应的word模板里面也有这4项
如果实现读取excel这4个信息,并且写入word里面呢

liuzhengyuan 发表于 2022-8-3 00:59:11

用第三方库

漫星闪 发表于 2022-8-3 11:21:02

你如果用excel表的vba编译器的话,请先将word的组件引用"工具--引用--Microsoft Word XX library.." 确定

如果你是用word的vba编译器的话,先将excel的组件引用"工具--引用--Microsoft Excel XX library.." 确定

然后右键左边的vba project 插入 模块(module),将以下代码复制之后,稍加修改就可以用

Sub Test()
'
'宏 从excel复制每行指定的单元格内容到word,每行生成一个word文档
'
Application.ScreenUpdating = False      '关闭屏幕刷新

'定义excel的部分
Dim aApp   As Application
Dim aBook   As Workbook
Dim aSheet   As Worksheet
Set aApp = CreateObject("excel.application")
'aApp.Visible = True
Set aBook = aApp.Workbooks().Open(Filename:="C:\Documents and Settings\Jully\桌面\export.xls")
Set aSheet = aBook.Worksheets.Item(1)

'定义word部分
Dim aWrd As Word.Application
Set aWrd = CreateObject("word.application")
'aWrd.Visible = True



Dim aRow As String   '记录excel的有效行数
Dim i As Integer
Dim temp As String   '取excel的指定单元格数据


aRow = aSheet.Range("A1").CurrentRegion.Cells.Rows.Count

For i = 1 To aRow
    temp = aSheet.Cells(Trim(i), 2) & aSheet.Cells(Trim(i), 5) & aSheet.Cells(Trim(i), 5)   '取单元格每一行的第2.3.5列的内容
    aWrd.Documents.Add                                                                      '添加新文档
    aWrd.Documents(1).Activate                                                            '获取焦点
    aWrd.Selection.TypeText Text:=temp                                                      '输出
    aWrd.Documents(1).SaveAs Filename:="C:\" & Trim(i) & ".doc"                           '保存
    aWrd.Documents(1).Close                                                               '关闭
Next i

aApp.Quit                                           '退出excel
aWrd.Quit                                           '退出word

Application.ScreenUpdating = True                   '恢复屏幕刷新

End Sub

tommyyu 发表于 2022-8-3 16:04:32

https://fishc.com.cn/forum.php?mod=forumdisplay&fid=319&filter=typeid&typeid=722

tommyyu 发表于 2022-8-3 16:05:15

漫星闪 发表于 2022-8-3 11:21
你如果用excel表的vba编译器的话,请先将word的组件引用"工具--引用--Microsoft Word XX library.." 确定

...

为啥看着有点不太像Python呢……

tiancaizcx 发表于 2022-8-3 22:56:47

tommyyu 发表于 2022-8-3 16:04
https://fishc.com.cn/forum.php?mod=forumdisplay&fid=319&filter=typeid&typeid=722

这是读写excel,但是没有读写word!

tiancaizcx 发表于 2022-8-3 23:20:42

漫星闪 发表于 2022-8-3 11:21
你如果用excel表的vba编译器的话,请先将word的组件引用"工具--引用--Microsoft Word XX library.." 确定

...

谢谢了,我研究一下

tiancaizcx 发表于 2022-8-3 23:57:22

漫星闪 发表于 2022-8-3 11:21
你如果用excel表的vba编译器的话,请先将word的组件引用"工具--引用--Microsoft Word XX library.." 确定

...

你好,我想问一下,我是新手,希望你别见怪哈,因为你得代码我还没细细研究。
如果我要实现将excel里的数据写入一个word得合同模板中,比如这个合同模板里面又名字,地址,电话这3条要素需要EXCEL中对应得导入,这个应该改哪里呢?

lassiter 发表于 2022-8-4 02:02:14

给你提供一个用python实现的思路:
1、pip安装python-docx和python-xlsx模块
2、import docx ,import xlsx
3、手动建立一个word,把合同模板调整好,需要填数据的空位用表格,隐藏边框留好
4、读取excel的数据,查询word中的表格,一一对应写入

漫星闪 发表于 2022-8-4 06:44:57

用VBA的话,就先将要写入的地方一一标记,在用Excel把要导入的数据命名,比入我要写入通知书,把标记命名为001,002这样子的,就是这样,记的替换一些名字Sub 生成Word文件_Click()
2    Dim Word对象 As New Word.Application, 当前路径, 导出文件名, 导出路径文件名, i, j
3    Dim Word表格行号, Word表格列号, Excel数据表列号
4    Dim Str1, Str2
5    当前路径 = ThisWorkbook.Path
6   B = InputBox("请输入数据开始行", "提示")
7   c = InputBox("请输入数据结束行", "提示")
8   
9    判断 = 0
10    For i = B To c
11       导出文件名 = "通知书"
12       FileCopy 当前路径 & "\通知书.doc", 当前路径 & "\" & 导出文件名 & "(" & Sheets("统计表").Range("c" & i) & ").doc" '可以将Sheets("1").Range("B" & i)换成其他数据
13       导出路径文件名 = 当前路径 & "\" & 导出文件名 & "(" & Sheets("统计表").Range("c" & i) & ").doc" '可以将Sheets("1").Range("B" & i)换成其他数据
14       With Word对象
15         .Documents.Open 导出路径文件名
16         .Visible = False
17          With .Selection.Find
18             For x = 7 To 1 Step -1 '从大到小,防止字符串序号低位与高位串扰,填写数据即excel表总列数
19                Str1 = "数据" & Format(x, "000")
20                'MsgBox "str1" & Str1
21                Str2 = Sheets("统计表").Cells(i, x)
22                .Text = Str1 '查找到指定字符串
23                .Replacement.Text = Str2 '替换字符串
24               .Execute Replace:=wdReplaceAll '全部替换
25             Next x
26         End With
27            
28         
29         
30         .Selection.WholeStory '全部选中
31         .Selection.Font.Color = wdColorAutomatic '字符为自动颜色
32       End With
33       Word对象.Documents.Save
34       Word对象.Quit
35       Set Word对象 = Nothing
36 '      If i = c Then
37 '       MsgBox "已输出到 Word 文件!", 0 + 48 + 256 + 0, "提示:"
38 '      End If
39      
40    Next i
41    If 判断 = 0 Then
42       i = MsgBox("已输出到 Word 文件!", 0 + 48 + 256 + 0, "提示:")
43    End If
44   
45 End Sub

tiancaizcx 发表于 2022-8-5 21:20:16

漫星闪 发表于 2022-8-4 06:44
用VBA的话,就先将要写入的地方一一标记,在用Excel把要导入的数据命名,比入我要写入通知书,把标记命名为 ...

你太给力了,我慢慢学下!
页: [1]
查看完整版本: 如何实现将excel里的数据写入word模板当中