如何通过java应用程序将word转为excel

author author     2023-01-13     427

关键词:

平时在工作中,很多小伙伴会习惯性地将文件保存为Word文档格式,但有时会发现某些文件如果保存成Excel表格可能会更好地呈现。例如有的文本在Word文本中不如在Excel工作表编辑计算方便,所以要把Word转Excel表格。那么对于之前已经保存成Word格式的文件该怎么转成Excel文件格式呢?下面就给大家分享一个高效又方便的方法,通过编程方式将Word转为Excel。

引入jar包

导入方法1:

手动引入。将 Free Spire.Office for Java 下载到本地,解压,找到lib文件夹下的Spire.Office.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:

如何通过Java应用程序将Word转为Excel_Java

导入方法2:如果您想通过 ​Maven​安装,则可以在 pom.xml 文件中添加以下代码导入 JAR文件。

<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.office.free</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>

将Word转为Excel具体步骤

为了使此代码示例易于理解,我们创建了以下三个执行特定功能的自定义方法。

  • exportTableInExcel() - 将数据从 Word 表格导出到指定的Excel 单元格。
  • copyContentInTable() - 将内容从 Word 中的表格单元格复制到Excel 单元格。
  • copyTextAndStyle() - 将带格式的文本从 Word段落复制到 Excel 单元格。

以下步骤演示了如何使用 Spire.Office for Java 将数据从 Word 文档导出到工作表。

  • 创建一个 Document 对象以加载 Word 文件。
  • 创建一个 Workbook 对象并向其添加一个名为“WordToExcel”的工作表。
  • 遍历 Word 文档中的所有节,遍历某个节下的所有文档对象,然后判断一个文档对象是段落还是表格。
  • 如果文档对象是一个段落,使用 copyTextAndStyle() 方法将段落写在 Excel 的指定单元格中。
  • 如果文档对象是表格,则使用 exportTableInExcel() 方法将表格数据从 Word 导出到 Excel 单元格。
  • 自动调整 Excel 中的行高和列宽,使单元格内的数据不会超出单元格的边界。
  • 使用 Workbook.saveToFile() 方法将工作簿保存到 Excel 文件。

完整代码

Java

import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange;
import com.spire.xls.*;

import java.awt.*;

public class ConvertWordToExcel

public static void main(String[] args)

//创建一个 Document 对象
Document doc = new Document();

//加载 Word 文件
doc.loadFromFile("XXX公司采购单.docx");

//创建一个 Workbook 对象
Workbook wb = new Workbook();

//删除默认工作表
wb.getWorksheets().clear();

//创建一个名为“WordToExcel”的工作表
Worksheet worksheet = wb.createEmptySheet("WordToExcel");
int row = 1;
int column = 1;

//循环遍历 Word 文档中的各个节
for (int i = 0; i < doc.getSections().getCount(); i++)
//获取特定节
Section section = doc.getSections().get(i);

//遍历某个节下的所有文档对象
for (int j = 0; j < section.getBody().getChildObjects().getCount(); j++)
//获取特定的文档对象
DocumentObject documentObject = section.getBody().getChildObjects().get(j);

//判断对象是否为段落
if (documentObject instanceof Paragraph)
CellRange cell = worksheet.getCellRange(row, column);
Paragraph paragraph = (Paragraph) documentObject;
//将段落从 Word 复制到特定单元格
copyTextAndStyle(cell, paragraph);
row++;


//判断对象是否为表格
if (documentObject instanceof Table)
Table table = (Table) documentObject;
//将表格数据从 Word 导出到 Excel
int currentRow = exportTableInExcel(worksheet, row, table);
row = currentRow;




//在单元格中换行文本
worksheet.getAllocatedRange().isWrapText(true);

//自动调整行高和列宽
worksheet.getAllocatedRange().autoFitRows();
worksheet.getAllocatedRange().autoFitColumns();

//将工作簿保存到 Excel 文件
wb.saveToFile("output.xlsx", ExcelVersion.Version2013);


//将数据从 Word 表格导出到 Excel 单元格
private static int exportTableInExcel(Worksheet worksheet, int row, Table table)
CellRange cell;
int column;
for (int i = 0; i < table.getRows().getCount(); i++)
column = 1;
TableRow tbRow = table.getRows().get(i);
for (int j = 0; j < tbRow.getCells().getCount(); j++)
TableCell tbCell = tbRow.getCells().get(j);
cell = worksheet.getCellRange(row, column);
cell.borderAround(LineStyleType.Thin, Color.BLACK);
copyContentInTable(tbCell, cell);
column++;

row++;

return row;


//将内容从 Word 表格单元格复制到 Excel 单元格
private static void copyContentInTable(TableCell tbCell, CellRange cell)
Paragraph newPara = new Paragraph(tbCell.getDocument());
for (int i = 0; i < tbCell.getChildObjects().getCount(); i++)
DocumentObject documentObject = tbCell.getChildObjects().get(i);
if (documentObject instanceof Paragraph)
Paragraph paragraph = (Paragraph) documentObject;
for (int j = 0; j < paragraph.getChildObjects().getCount(); j++)
DocumentObject cObj = paragraph.getChildObjects().get(j);
newPara.getChildObjects().add(cObj.deepClone());

if (i < tbCell.getChildObjects().getCount() - 1)
newPara.appendText("\\n");



copyTextAndStyle(cell, newPara);


//将段落的文本和样式复制到单元格
private static void copyTextAndStyle(CellRange cell, Paragraph paragraph)

RichText richText = cell.getRichText();
richText.setText(paragraph.getText());
int startIndex = 0;
for (int i = 0; i < paragraph.getChildObjects().getCount(); i++)
DocumentObject documentObject = paragraph.getChildObjects().get(i);
if (documentObject instanceof TextRange)
TextRange textRange = (TextRange) documentObject;
String fontName = textRange.getCharacterFormat().getFontName();
boolean isBold = textRange.getCharacterFormat().getBold();
Color textColor = textRange.getCharacterFormat().getTextColor();
float fontSize = textRange.getCharacterFormat().getFontSize();
String textRangeText = textRange.getText();
int strLength = textRangeText.length();
ExcelFont font = new ExcelFont(cell.getWorksheet().getWorkbook().createFont());
font.setColor(textColor);
font.isBold(isBold);
font.setSize(fontSize);
font.setFontName(fontName);
int endIndex = startIndex + strLength;
richText.setFont(startIndex, endIndex, font);
startIndex += strLength;

if (documentObject instanceof DocPicture)
DocPicture picture = (DocPicture) documentObject;
cell.getWorksheet().getPictures().add(cell.getRow(), cell.getColumn(), picture.getImage());
cell.getWorksheet().setRowHeightInPixels(cell.getRow(), 1, picture.getImage().getHeight());


switch (paragraph.getFormat().getHorizontalAlignment())
case Left:
cell.setHorizontalAlignment(HorizontalAlignType.Left);
break;
case Center:
cell.setHorizontalAlignment(HorizontalAlignType.Center);
break;
case Right:
cell.setHorizontalAlignment(HorizontalAlignType.Right);
break;



效果图

如何通过Java应用程序将Word转为Excel_转换_02

—本文完—

教你用java将excel转为pdf

Java将Excel转为PDF本文将介绍在Java程序中如何将Excel工作簿转为PDF文档的,包括:将整个工作簿转为PDF将指定工作表转为PDF使用工具:FreeSpire.XLSforJava(免费版)Jar文件下载及导入:方法1:通过官网下载。下载后,解压文件,将lib... 查看详情

java实现windows,linux服务器word,excel转为pdf;aspose-words,documents4j(代码片段)

Java实现windows,linux服务器word,excel转为PDF;aspose-words,Documents4j一、通过aspose-words将word,Excel文档转为PDF1.1引入相关的jar1.2将两个jar包,放入项目resources/lib目录下1.3配置pom.xml1.4测试代码二 查看详情

java将excel转为图片htmlxpsxmlcsv

通过文档格式转换,可满足不同办公场合对文档操作的需求。本文将介绍转换Excel文档为其他常见文档格式的方法。通过文中的方法,可支持将Excel转换为包括PDF、图片、html、XPS、XML、CSV、PCL、ODS、PostScript、以及OfficeExcel不同版... 查看详情

怎样能够轻松将ppt转为word文档

...很好大将ppt转换成word文档?下面就跟大家具体的介绍下如何来转换文档格式。   这里需要应用到文档的格式转换工具——迅捷pdf转换器。 查看详情

java将pdf/xps转为word/html/svg/ps/pcl/pngpdf和xps互转

Spire.Cloud.SDKforJava提供了接口PdfConvertApi通过convert()方法将PDF文档以及XPS文档转为指定文档格式,如转PDF为Word(支持Docx、Doc)、Html、XPS、SVG、PS、PCL、PNG,将XPS转为Word(支持Docx、Doc)、Html、PDF、SVG、PS、PCL、PNG等。文本将通过Jav... 查看详情

如何将word,excel转换成pdf格式

...actory、ultrapdf等),可以将任意文档打印/转换成pdf,只要应用程序提供有打印文档的选项。通过这种方法生成的pdf文件可以完美保留文档的版式和内容,而且生成的文件体积小参考技术A高版本office2010及更新的版本有自带另存外P... 查看详情

如何通过java应用程序创建word表格

...活动当中广泛采用着形形色色的表格。那么如何通过Java应用程序创建Word表格呢?别担心,本文将详细为您介绍通过Java应用程序创建Word表格。下面是我整理的思路以及具体步骤,并附上Java代码供大家参考。使用工具: ​​Fre... 查看详情

如何将excel表格转成在线文档

通过文档的转换工具,可以将excel格式直接转为word文档,而且是将excel工作簿中的所有表格同时进行转换。首先在转换器中选择文件转word的转换类型,通过这个选项可以把我们常见的excel,ppt以及pdf文件转换成为word文档的格式。... 查看详情

java将excel转为uos

...使用XML和压缩保存电子表格。既有的Excel表格文件,可以通过格式转换的方式转换为UOS格式,本文将对此作相关介绍。【导入jar包】使用jar包:​​Spire.Xls.jar​​ version:12.7.4导入方法1:手动下载jar到 查看详情

java将excel转为pdf_基于spire.cloud.excel

...步骤及方法。必要步骤:步骤1:Jar文件下载及导入。可通过“下载中心”下载获取jar;或者通过maven仓库安装导入,具体参考安装方法。步骤2:ID 查看详情

如何通过java代码向word文档添加文档属性

...要的注释、说明等。还可以标注版权。今天就为大家介绍如何通过Java代码向Word文档添加文档属性。详情请阅读以下内容。将内置文档属性添加到Word文档将自定义文档属性添加到Word文档程序环境:方法1:手动引入。将 ​​Fre... 查看详情

java将彩色pdf转为灰度(黑白)

本文以Java代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即:将PDF文档里面的彩色图片或者文字等通过调用PdfGrayConverter.toGrayPdf()方法转为文档页面为灰色调、无彩色效果的文档,可实现缩小文档大小的目的。... 查看详情

java将word文件转为pdf

 importjava.io.File;importcom.jacob.activeX.ActiveXComponent;importcom.jacob.com.Dispatch;publicclassWord2Pdf{publicstaticvoidmain(Stringargs[]){ActiveXComponentapp=null;StringwordFile="C:/xxxxx. 查看详情

java将word转为pdf(100%与word软件转换一样)

jdk环境:jdk_8.0.1310.11_64  (64位)1.引入pom文件<!--word转pdf(依赖microsoft)--><dependency><groupId>com.jacob</groupId><artifactId>jacob</artifactId><version>1 查看详情

怎么样才能快速把excel的表格转为word呢?

...腾讯在线文档的Word里,然后在Word中合并单元格迅速就能转为Word了,超级方便 查看详情

word两张excel表格中的数据怎么建立关联

...件点击即可打开相应的E表但表里自动更改不知道能不能通过单元格超链接实现参考技术A通过公式就行,选中sheet2中的单元格输入“=”号,然后输入关联公式,直接调用就不用任何公式,只要一个等号,然后单击sheet1中药关联的... 查看详情

如何通过java程序合并word文档(代码片段)

...最终生成的合并文档看起来更加规范、美观。本文将介绍如何通过FreeSpire.DocforJava组件来合并Word文档。下面是具体方法和示例代码。程序环境:IntelliJIDEA2018(jdk1.8.0)在进行操作之前先导入jar包,请参考以下两种导入方式:方法一... 查看详情

java有关word,excel,pdf转换成html有几种方式

...el为HTML“JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32libraries。”首先下载Jacob包,JDK1.5以上需要使用Jacob1.9版本(JDK1.6尚未测试),与先前的Jacob1.7差别不大1、将压缩包解压后,Jacob.jar添加到Librar... 查看详情