一个少妇满足三个老头在线观看,锕锕锕锕锕锕锕好痛视频,亚洲人成网站在线播放2019

<center id="pt2l2"></center>
<tr id="pt2l2"></tr>
  • <big id="pt2l2"></big>

        Java實現將導出帶格式的Excel數據到Word表格

        在Word中制作報表時,我們經常需要將Excel中的數據復制粘貼到Word中,這樣則可以直接在Word文檔中查看數據而無需打開另一個Excel文件。但是如果表格比較長,內容就會存在一定程度的丟失,無法完整顯示數據。并且當工作量到達一定程度時,整個過程會非常費時,降低工作效率。那么如何輕松地將帶格式的 Excel 數據導出到 Word 表格呢?不用擔心,本文將通過Java應用程序詳細介紹如何把帶格式的Excel數據導入Word表格。希望這篇文章能對大家有所幫助。

        使用工具Free Spire.Office for Java

        程序環境:

        方法1:手動引入。將?Free Spire.Office for Java?下載到本地,解壓,找到lib文件夾下的Spire.XLS.jar文件。在IDEA中打開如下界面,將本地路徑中的jar文件引入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>

        具體步驟:

        • 創建一個?Workbook?對象并使用?Workbook.LoadFromFile()?方法加載一個示例 Excel 文件。
        • 通過?Workbook.Worksheets[index]?屬性獲取特定的工作表。
        • 創建一個?Document?對象,并向其添加一個節。
        • 使用?Section.AddTable()?方法添加一個表。
        • 檢測工作表中合并的單元格,并使用自定義方法?MergeCells()?合并 Word表格相應的單元格。
        • 通過?CellRange.Value?屬性獲取特定 Excel 單元格的值,并使用?TableCell.AddParagraph().AppendText()?方法將其添加到 Word 表格的單元格中。
        • 使用自定義方法?CopyStyle()?將字體樣式和單元格樣式從 Excel 復制到 Word 表格中。
        • 使用?Document.SaveToFile()?方法將文檔保存到 Word 文件。

        完整代碼:

        【Java】

        import com.spire.doc.*;
        import com.spire.doc.FileFormat;
        import com.spire.doc.documents.HorizontalAlignment;
        import com.spire.doc.documents.PageOrientation;
        import com.spire.doc.documents.VerticalAlignment;
        import com.spire.doc.fields.TextRange;
        import com.spire.xls.*;
        
        public class ExportExcelToWord {
        
            public static void main(String[] args) {
        
                //下載一個Excel文件
                Workbook workbook = new Workbook();
                workbook.loadFromFile("sample.xlsx");
        
                //得到第一張工作表
                Worksheet sheet = workbook.getWorksheets().get(0);
        
                //創建一個Word文檔
                Document doc = new Document();
                Section section = doc.addSection();
                section.getPageSetup().setOrientation(PageOrientation.Landscape);
        
                //添加一個表格
                Table table = section.addTable(true);
                table.resetCells(sheet.getLastRow(), sheet.getLastColumn());
        
                //合并單元格
                mergeCells(sheet, table);
        
                for (int r = 1; r <= sheet.getLastRow(); r++) {
        
                    //設置行高
                    table.getRows().get(r - 1).setHeight((float) sheet.getRowHeight(r));
        
                    for (int c = 1; c <= sheet.getLastColumn(); c++) {
                        CellRange xCell = sheet.getCellRange(r, c);
                        TableCell wCell = table.get(r - 1, c - 1);
        
                        //獲得特定Excel單元格的值并將其添加到Word表格單元格
                        TextRange textRange = wCell.addParagraph().appendText(xCell.getValue());
        
                        // 從Excel復制字體和單元格樣式到Word
                        copyStyle(textRange, xCell, wCell);
                    }
                }
        
                //保存文檔為Word文件
                doc.saveToFile("ExportToWord.docx", FileFormat.Docx);
            }
        
            //如果有合并的區域,則合并單元格
            private static void mergeCells(Worksheet sheet, Table table) {
                if (sheet.hasMergedCells()) {
        
                    //從Excel中獲取合并的單元格范圍
                    CellRange[] ranges = sheet.getMergedCells();
                    for (int i = 0; i < ranges.length; i++) {
                        int startRow = ranges[i].getRow();
                        int startColumn = ranges[i].getColumn();
                        int rowCount = ranges[i].getRowCount();
                        int columnCount = ranges[i].getColumnCount();
        
                        //合并Word表格中的對應單元格
                        if (rowCount > 1 && columnCount > 1) {
                            for (int j = startRow; j <= startRow + rowCount ; j++) {
                                table.applyHorizontalMerge(j - 1, startColumn - 1, startColumn - 1 + columnCount - 1);
                            }
                            table.applyVerticalMerge(startColumn - 1, startRow - 1, startRow - 1 + rowCount - 1 );
                        }
                        if (rowCount > 1 && columnCount == 1 ) {
                            table.applyVerticalMerge(startColumn - 1, startRow - 1, startRow - 1 + rowCount - 1);
                        }
                        if (columnCount > 1 && rowCount == 1 ) {
                            table.applyHorizontalMerge(startRow - 1, startColumn - 1,  startColumn - 1 + columnCount-1);
                        }
                    }
                }
            }
        
            //復制Excel單元格樣式到Word表格
            private static void copyStyle(TextRange wTextRange, CellRange xCell, TableCell wCell) {
        
                //復制字體樣式
                wTextRange.getCharacterFormat().setTextColor(xCell.getStyle().getFont().getColor());
                wTextRange.getCharacterFormat().setFontSize((float) xCell.getStyle().getFont().getSize());
                wTextRange.getCharacterFormat().setFontName(xCell.getStyle().getFont().getFontName());
                wTextRange.getCharacterFormat().setBold(xCell.getStyle().getFont().isBold());
                wTextRange.getCharacterFormat().setItalic(xCell.getStyle().getFont().isItalic());
        
                //復制背景色
                wCell.getCellFormat().setBackColor(xCell.getStyle().getColor());
        
                //復制水平對齊方式
                switch (xCell.getHorizontalAlignment()) {
                    case Left:
                        wTextRange.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Left);
                        break;
                    case Center:
                        wTextRange.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
                        break;
                    case Right:
                        wTextRange.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Right);
                        break;
                }
        
                //復制垂直對齊方式
                switch (xCell.getVerticalAlignment()) {
                    case Bottom:
                        wCell.getCellFormat().setVerticalAlignment(VerticalAlignment.Bottom);
                        break;
                    case Center:
                        wCell.getCellFormat().setVerticalAlignment(VerticalAlignment.Middle);
                        break;
                    case Top:
                        wCell.getCellFormat().setVerticalAlignment(VerticalAlignment.Top);
                        break;
                }
            }
        }

        效果圖

        到此這篇關于Java實現將導出帶格式的Excel數據到Word表格的文章就介紹到這了,更多相關Java導出Excel數據到Word內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

        若文章對您有幫助,幫忙點個贊!

        0
        0
        發布時間 2022-11-14 06:08:04
        0 條回復(回復會通過微信通知作者)
        點擊加載更多評論
        登錄 后再進行評論
        (微信掃碼即可登錄,無需注冊)
        一个少妇满足三个老头在线观看,锕锕锕锕锕锕锕好痛视频,亚洲人成网站在线播放2019