
(相關資料圖)
平時在工作中,很多小伙伴會習慣性地將文件保存為Word文檔格式,但有時會發現某些文件如果保存成Excel表格可能會更好地呈現。例如有的文本在Word文本中不如在Excel工作表編輯計算方便,所以要把Word轉Excel表格。那么對于之前已經保存成Word格式的文件該怎么轉成Excel文件格式呢?下面就給大家分享一個高效又方便的方法,通過編程方式將Word轉為Excel。
導入方法1:
手動引入。將??Free Spire.Office forJava??下載到本地,解壓,找到lib文件夾下的Spire.Office.jar文件。在IDEA中打開如下界面,將本地路徑中的jar文件引入Java程序:
導入方法2:如果您想通過 ????Maven????安裝,則可以在 pom.xml 文件中添加以下代碼導入 JAR文件。
com.e-iceblue e-iceblue https://repo.e-iceblue.cn/repository/maven-public/ e-iceblue spire.office.free 5.3.1
為了使此代碼示例易于理解,我們創建了以下三個執行特定功能的自定義方法。
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; } }}
—本文完—