-
2021-10-29 16:07:08
问题:
当从MS EXCEL中复制数据到MS WORD中时,表格格式错乱,2个表格列数相同。
解决:
EXCEL表格中单元格存在空值,要将空的单元格填充值(非空),再复制合并格式就不会错乱了。
更多相关内容 -
export:SpringBoot项目实现导出word的两种方式(文本、动态行表格、循环列表下的动态行表格、合并单元格)
2021-05-11 14:27:14word-export ...1.SpringBoot + poi-tl 根据word模板动态生成word(文本、动态行表格、循环列表下的动态行表格、合并单元格) 2.SpringBoot + easypoi 根据word模板动态生成word(文本、表格、图片) -
最新PHPword整合,优化添加导出表格,表格内部换行,合并单元格
2018-09-04 16:43:53整合优化PHPword导出表格,优化项添加表格,行内换行,合并单元格 内含demo,可根据需求修改 声明:此为开源代码,经本人二次整合,如有侵权请联系管理员删除。 -
python docx处理word文档中表格合并问题
2021-02-10 03:12:32问题描述python中用docx库读取word文件,若word文件中包含合并的表格表格则通过docx读取显示:file = docx.Document(path)for table in file.tables:for row in table.rows:for cell in row.cells:print(cell.text)...问题描述
python中用docx库读取word文件,若word文件中包含合并的表格表格
则通过docx读取显示:
file = docx.Document(path)
for table in file.tables:
for row in table.rows:
for cell in row.cells:
print(cell.text)
结果为:
1-1
1-1
1-3
1-4
2-1
2-2
2-3
2-4
3-1
3-1
3-3
2-4
3-1
3-1
4-3
4-3
合并的单元格会重复显示,如1-1会显示两次;
如果在循环中改变cell.text内容,则保存后会重复显示
for table in file.tables:
for row in table.rows:
for cell in row.cells:
cell.text = cell.text + 'test'
file.save(path2)
解决方案
打印cell发现合并的单元格虽然重复但公用内存地址:
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
所以,可先判断cell是否重复再修改cell.text,
代码:
cell_set = []
for table in file.tables:
for row in table.rows:
for cell in row.cells:
if cell not in cell_set:
cell_set.append(cell)
cell.text = cell.text + 'test'
执行结果:
-
java导出word表格 行列合并
2022-07-05 17:23:41新建模板如下(使用offic,不要用wps) 另存为xm格式 ...找到 w:tr 这个标签,这个标签代表表格里的行,用 标签将其包住。 标签代表一个集合,并会循环遍历这个集合。 as l 表示给这个集合取了个别名,stu......生成word表格
新建模板如下(使用offic,不要用wps)
另存为xm格式
将文件放入resource/template目录下,复制一份,将后缀名改为ftl,也可以不复制直接改后缀名(这里忽视我其他的一些测试模板)
打开ftl文件,我们的占位符可能会错位,将他们放到一起(一定不要改动标签)
准备数据生成wordpublic static void main(String[] args) throws Exception { Student student1 = new Student("一年级","一班","张三","班长"); Student student2 = new Student("一年级","一班","李四","班长"); // Student student3 = new Student("一年级","二班","","班长"); Student student4 = new Student("一年级","二班","赵六","班长"); Student student5 = new Student("二年级","一班","","班长"); List<Student> list = new ArrayList<>(); list.add(student1); list.add(student2); // list.add(student3); list.add(student4); list.add(student5); Map<String,Object> dataMap = new HashMap<>(); dataMap.put("students",list); String templateName = "student2.ftl"; //这里注意一定得是doc,用doc可能会出现wps可以打开但是office打不开的情况,具体原因未知 WordUtils.generateWord(dataMap, templateName, "D://demo.doc"); }
对模板做如下更改
找到 w:tr 这个标签,这个标签代表表格里的行,用 <#list> 标签将其包住。<#list> 标签代表一个集合,并会循环遍历这个集合。 as l 表示给这个集合取了个别名,students就是上面主方法中map的key。
在list这个标签中用 l.xxx 这种形式就表示取当前遍历的集合元素的属性值
运行主方法,可生成如下word表格
行列合并
到这一步表格虽然生成了,但是行列合并还没有实现
下面修改模板实现行合并
列合并
修改模板行列合并后再次生成word文档效果如下
引入pom和使用util
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.Version; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.Map; /** * @author: tanghaizhi * @CreateTime: 2022/6/27 11:38 * @Description: */ public class WordUtils { /** * 生成 word 文档方法 * * @param dataMap 要填充的数据 * @param templateName 模版名称 * @param fileName 要输出的文件路径 * @throws Exception 抛出的异常 */ public static void generateWord(Map<String, Object> dataMap, String templateName, String fileName) throws Exception { // 设置FreeMarker的版本和编码格式 Configuration configuration = new Configuration(new Version("2.3.28")); configuration.setDefaultEncoding("UTF-8"); // 设置FreeMarker生成Word文档所需要的模板的路径 // configuration.setDirectoryForTemplateLoading(new File("/Users/xxx/Desktop/")); // 此处把模版文件都放在 resources 下的 templates 中 configuration.setClassForTemplateLoading(WordUtils.class, "/templates"); // 设置FreeMarker生成Word文档所需要的模板 Template tem = configuration.getTemplate(templateName, "UTF-8"); // 创建一个Word文档的输出流 Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(fileName)), StandardCharsets.UTF_8)); // FreeMarker使用Word模板和数据生成Word文档 tem.process(dataMap, out); out.flush(); out.close(); } }
-
Python实战009:读取Word文档中的表格数据及表格合并问题解决
2020-12-29 07:54:33同事最近被安排整理资料,主要工作室将文档中的表格数据提取出来并整理层Excel表格供我们FII刀具...一个Word文档中主要包含了有这么几种类型的内容:paragraph(段落)、table(表格)、character(字符)、image(图片)等...同事最近被安排整理资料,主要工作室将文档中的表格数据提取出来并整理层Excel表格供我们FII刀具商城进行资料维护。由于刀具的种类繁多且规格无数,所以要处理的数据量相当的庞大。人工核对整理既费时又费力还耗神显然不合适,作为程序员的我们整么能不出手支援呢?
一个Word文档中主要包含了有这么几种类型的内容:paragraph(段落)、table(表格)、character(字符)、image(图片)等。我现在要解析的word文档中主要是表格、字符串、图片等信息,我们主要是要拿到表格中的数据。
处理这类文档数据当然优先考虑Python啦,python解析word文件可以使用包docx。首先我们需要安装python-docx,直接执行命令:pip install python-docx即可安装。当前的python-docx的版本为0.8.10,当python-docx安装完毕后通过python命令启动Python并输入import docx命令,如果没有提示任何错误即表示python-docx安装成功了。
python-docx
Python-docx是一个用于创建和更新Microsoft Word(.docx)文件的python库,可以很好的处理Word文档中的数据,但是要注意的是该库
{!-- PGC_COLUMN --}
无法处理.doc后缀的Word文档(直接该文件后缀是不行的),所以如果要处理.doc文档请先另存为.docx后缀的Word文档。python-docx提供了丰富的API Documentation可以帮助用户快速实现对Word文档的Document objects(文档对象)、Document Settings objects(文档设置对象)、Style-related objects (风格相关的对象)、Text-related objects(文本相关的对象)、Table objects (表格对象)、Section objects (段落对象)、Shape-related objects (形状相关的对象)、DrawingML objects (绘图对象)、Shared classes (共享类)及Enumeration (枚举)等各种操作,可以实现包含段落、分页符、表格、图片、标题、样式等几乎所有的Word文档中能常用的功能。
获取Word中的表格数据
现在我们可以创建一个Python文件来开始读取Word文件了,这里我们先创建一个规则的表格数据的Word文档来测试。tables是Word文件中所有的table构成的list(当前测试文件中只有一个table),range()函数在 for 循环中创建一个整数列表(表格是从1开始的)。
表格合并问题处理
上面我们处理的是一个没有单元格合并的标准表格,获取数据还是想到的简单的。现在我们继续测试Word文件中包含合并的单元格表格,如果还是用上面的方法那么合并的单元格内容会重复显示。比如这里的物品购买明细会出现4次,合计会出现3次,143会出现2次。
单纯的数据去重
如果我们只是为了获取其中的数据,那么晚我们可以使用最简单的方法就是去重复。创建一个空的列表用来存储单元格中的数据,当单元格中的数据在列表中已经存在时跳过该值,如果不存在则将其加入到列表中,这样最后的列表数据就是我们得到的不重复的数据了。有人应该已经发现问题了,那就是不同单元格中如果存在相同的数据的话也会被去重了。
单元格合并特点
这里我们需要知道一个单元格合并的特点,每个单元格都有其对应的内存地址,及时两个单元格之间的数据相同但是其对应的内存地址是不同的。而单元格合并之后这几个合并的单元格所处的内存地址是相同的,所以我们只要找到地址重复的单元格就说明这几个地址所处的单元格是合并的单元格。
内存地址去重
所以这里我们就可以通过内存地址来去重,当获取到指定单元格时我们拿着该单元格地址去判断这个对应的上一行和上一列中是否存在相同的内存地址,如果存在说明数据已经提取到了此时可以跳过后面的处理,如果不存在则继续接下来的操作即可。
总结:
我看网上的Python处理word文档中表格合并问题的方案都比较繁琐,这里提供个简单易懂的方式希望能帮到大家。以上内容是小编给大家分享的【Python实战009:读取Word文档中的表格数据及表格合并问题解决】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
该方法只能去横向去重,纵向单元格合无效!
-
POI导出word文件中表格合并方法(行合并,列合并)
2021-09-17 17:22:12POI导出word文件中表格合并方法(行合并,列合并) 怕自己忘记记录一下 . // word跨列合并单元格 //row 指定行、fromCell 开始列数、toCell 结束列数。 public void mergeCellsHorizontal(XWPFTable table, int ... -
POI 实现Word表格合并单元格(行合并)
2021-06-16 18:48:171 Maven依赖 com.alibaba easyexcel 2.2.7 cn.hutool hutool-all 5.6.2 2 合并单元格 /** * 合并单元格 * * @param table 表格对象 * @param beginRowIndex 开始行索引 * @param endRowIndex 结束行索引 * ... -
Java Word模板导出包含表格单元格合并
2021-02-12 18:16:50java通过freemarker导出word循环合并表格单元格本文主要讲解通过freemarker模板引擎来导出word,并且在word中包含表格的合并部分需要循环生成。一、Java需要通过模板导出的word如上图所示。物品的信息是循环部分。... -
java poi 动态导出word表格带合并效果
2020-08-12 17:11:39工作常用的excel,word导出,需要引入下面的6个主要包,和主要包依赖的其他包 ,可以看下面的表格进行依赖下载引入 这下面的两张图是主要包对应涉及到功能,可以按需要进行引入,有些真的用不到的主要包可以不引入 ... -
NPOI实现Word表格单元格合并
2021-04-16 14:56:18public void MergeCellsCustom(XWPFTable table, int startColumn, int endColumn, int startRow, int endRow) { for (int rowIndex = startRow; rowIndex <= endRow; rowIndex++) { if (startColumn <... -
python 生成word表格(合并单元格)
2021-06-28 21:21:07python 生成word表格(合并单元格) 本人使用pycharm,安装库python-docx 代码: from docx import Document from docx.shared import Inches, Pt from docx.oxml.ns import qn from docx.enum.text import WD_ALIGN_... -
C# 操作word表格合并单元格
2018-07-11 10:55:52C# 操作word表格遇到合并单元格的时候,假设表格是3行6列newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));//合并第1行第1列到横向单元格合并,使用如下语句 newTable.Cell(1, 3).Merge(newTable.Cell(1, 4));... -
电脑Word文档中两个表格如何合并
2021-07-28 05:07:22电脑Word文档中两个表格如何合并腾讯视频/爱奇艺/优酷/外卖 充值4折起Word文档是我们经常在工作和学习中使用的软件,我们有的时候也会在Word文档中绘制表格。接下来小编就教大家怎么在Word文档中将两个表格拼接。... -
合并Word 表格中单元格
2020-12-11 04:03:25//合并Word 表格中单元格procedure mergeWordCell;var WordApp: TWordApplication;WordDoc: TWordDocument;DocInx,oFileName,CfCversions,oReadOnly,AddToRctFiles,PswDocument,PswTemplate,oRevert,WPswDocument,... -
Word文档中怎么分割表格与合并表格快捷键
2020-12-23 04:32:45Word分割表格与合并表格快捷键事物总是成双对,既然 Word 可以分割表格,自然也可以合并表格。如果表格拆分位置错了,可以把合并起来重新拆分;或者有多张小表格想把它们合并成一张,也可以。一、Word... -
word表格怎么合并单元格居中
2021-06-22 23:30:05而在word文档中,偶尔我们也需要插入表格,然后编辑表格,那么如何对word中的表格单元格进行合并、拆分呢?一、如何在word中创建表格1.选择“插入”选项卡,单击“表格”按钮,在弹出的列表框中选择“插入表格”命令... -
WORD两个表格合并为一个表格(删除两个表格之间多余的空格)
2021-05-12 14:01:40问题 word有两个表格,中间有空格,删除掉空格之后,两个表格之间至少也会保留一个空格,删除不掉。所以两个表格没办法合并。 -
在Word中上下两张表格合并不了的解决办法
2019-12-02 18:23:22如下所示,有两个表格,长宽都一致,如何进行合并? 解决的办法很简单:只要在中间的空行输入del键,删除当前回车即可变成以下所需求的目标。 但是有时候会出现以下情况: 表面看起来好象是一起了,但是仔细看... -
使用poi将多个word合并
2019-03-25 11:10:44使用poi将多个word合并,本方法经过测试,目前只支持多个doc格式合并成一个doc,如果是docx格式生成后打不开 -
aspose合并word中的表格
2021-04-26 11:01:33//下标从0开始,这里是操作第2个表格 Table table = (Table) doc1.getChild(NodeType.TABLE, 1, true); //开始位置,第2行第1列 Cell cellStartRange = table.getRows().get(0).getCells().get(0); // 第2... -
学习分享:POI-TL 导出Word复杂表格合并分享
2021-01-11 15:39:35最近在做项目时候遇到的一个关于导出Word的文件的需求,数据展示可以根据POI-TL的官方的文档还是可以做出来的,但是有一些表格的合并处理poi-tl只是给了简单例子,前期的学习可以参考POI-TL(htt -
word怎么合并表格边框
2020-12-20 12:42:48回答:方法如下:去掉Word文字保留表格的方法一:1、全选表格,按 Delet 键,表格的所有文字被删除,如图3所示:2、图3是图1所示是表格,文字都没有了。去掉Word文字保留表格的方法二:全选表格,按 Ctrl + C 复制,... -
Java中利用freemarker导出word表格并合并单元格
2020-06-24 11:43:171、word表格的模板 另存为xml格式: 将保存的xml改成.ftl 格式化一下xml,看看文件中的带有是否正确注:有可能出现{}是否正确 注:有可能出现是否正确注:有可能出现{标签。。。再},这种情况复制没有这种情况的... -
visual c++操作word文件 新建 保存 新建表格 更改表格 格式合并单元格 填写页眉页脚.zip
2021-01-22 20:29:51visual c++操作word文件 新建 保存 新建表格 更改表格 格式合并单元格 填写页眉页脚.zip -
利用python批量合并excel和word内的表格
2022-06-04 10:56:58利用python批量合并excel和word内的表格 -
POI-TL合并多个Word文档
2021-06-27 23:13:49POI-TL合并多个Word文档 -
Word2021表格中怎样合并单元格.docx
2021-09-27 04:28:45Word2021表格中怎样合并单元格.docx -
word跨页表格拆分与合并
2022-03-19 23:01:36拆分:Ctrl+shift+enter 合并:Shift + Alt + 向下箭头