Java自動化實現(xiàn)在Excel工作表中創(chuàng)建、修改和刪除表格
在Java應(yīng)用中,我們經(jīng)常需要動態(tài)處理Excel里的表格。比如自動生成一個帶格式的數(shù)據(jù)報表,或者調(diào)整現(xiàn)有表格的范圍。使用Spire.XLS for Java,這幾行代碼就能搞定表格的創(chuàng)建、修改和刪除,讓繁瑣的手動操作徹底自動化。
1. 輕松創(chuàng)建 Excel 表格
在Excel中創(chuàng)建表格,不僅能使數(shù)據(jù)結(jié)構(gòu)化、易于閱讀,還能自動獲得篩選、排序、匯總等功能。使用Spire.XLS for Java,創(chuàng)建表格變得異常簡單。
Spire.XLS for Java 實現(xiàn)
創(chuàng)建表格的核心步驟是指定數(shù)據(jù)范圍,并為表格命名。我們還可以為表格應(yīng)用預(yù)設(shè)的樣式,使其外觀更專業(yè)。
代碼示例
import com.spire.xls.*;
import com.spire.xls.collections.IListObjects;
import com.spire.xls.core.IListObject;
public class CreateExcelTable {
public static void main(String[] args) {
// 1. 創(chuàng)建一個新的工作簿
Workbook workbook = new Workbook();
// 2. 獲取第一個工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 3. 填充一些示例數(shù)據(jù)
sheet.getCellRange("A1").setText("產(chǎn)品");
sheet.getCellRange("B1").setText("數(shù)量");
sheet.getCellRange("C1").setText("單價");
sheet.getCellRange("D1").setText("總價");
sheet.getCellRange("A2").setText("鍵盤");
sheet.getCellRange("B2").setNumberValue(10);
sheet.getCellRange("C2").setNumberValue(120.50);
sheet.getCellRange("D2").setFormula("=B2*C2"); // 使用公式
sheet.getCellRange("A3").setText("鼠標");
sheet.getCellRange("B3").setNumberValue(20);
sheet.getCellRange("C3").setNumberValue(60.00);
sheet.getCellRange("D3").setFormula("=B3*C3");
// 4. 在指定數(shù)據(jù)區(qū)域創(chuàng)建表格,并命名為 "銷售數(shù)據(jù)表"
// 參數(shù)1: 表格名稱
// 參數(shù)2: 數(shù)據(jù)范圍
IListObject table = sheet.getListObjects().create("銷售數(shù)據(jù)表", sheet.getCellRange("A1:D3"));
// 5. 應(yīng)用內(nèi)置表格樣式(例如:淺色樣式9)
table.setBuiltInTableStyle(TableBuiltInStyles.TableStyleLight9);
// 6. 啟用篩選功能 (默認情況下表格會啟用)
table.setShowHeaderRow(true); // 顯示標題行
table.setShowTotalsRow(false); // 默認不顯示匯總行
// 7. 保存工作簿
workbook.saveToFile("CreateExcelTable.xlsx", ExcelVersion.Version2016);
System.out.println("Excel表格 '銷售數(shù)據(jù)表' 已成功創(chuàng)建!");
}
}
關(guān)鍵點提示
sheet.getListObjects().create()方法是創(chuàng)建表格的核心,它允許你指定表格的名稱和數(shù)據(jù)范圍。setBuiltInTableStyle()可以為表格快速應(yīng)用Excel內(nèi)置的多種樣式,提升美觀度。setShowHeaderRow()和setShowTotalsRow()可以控制表格是否顯示標題行和匯總行。
2. 靈活修改 Excel 表格
表格創(chuàng)建后,我們常常需要進行修改,例如添加新的數(shù)據(jù)行、更新現(xiàn)有數(shù)據(jù)、調(diào)整表格樣式,甚至添加匯總行等。
Spire.XLS for Java 實現(xiàn)
Spire.XLS for Java 提供了方便的API來訪問工作表中的現(xiàn)有表格對象,進而對其進行各種修改。
代碼示例
本例將演示如何向現(xiàn)有表格添加新行數(shù)據(jù),并啟用匯總行功能。
import com.spire.xls.*;
import com.spire.xls.core.IListObject;
public class ModifyExcelTable {
public static void main(String[] args) {
// 1. 加載一個包含表格的Excel文件
Workbook workbook = new Workbook();
workbook.loadFromFile("CreateExcelTable.xlsx"); // 使用上一步創(chuàng)建的文件
// 2. 獲取第一個工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 3. 獲取工作表中的第一個表格(通過索引或名稱)
IListObject table = sheet.getListObjects().get(0); // 假設(shè)只有一個表格
// 4. 添加新數(shù)據(jù)行到表格下方
int lastRow = table.getRange().getLastRow(); // 獲取表格當前數(shù)據(jù)的最后一行
sheet.getCellRange("A" + (lastRow + 1)).setText("顯示器");
sheet.getCellRange("B" + (lastRow + 1)).setNumberValue(5);
sheet.getCellRange("C" + (lastRow + 1)).setNumberValue(800.00);
sheet.getCellRange("D" + (lastRow + 1)).setFormula("=B" + (lastRow + 1) + "*C" + (lastRow + 1));
// 5. 調(diào)整表格的數(shù)據(jù)范圍以包含新添加的行
// 注意:Spire.XLS會自動擴展表格區(qū)域以包含新增數(shù)據(jù),如果新增數(shù)據(jù)緊鄰表格下方。
// 但為了嚴謹性,也可以手動更新表格的Range,或通過添加ListRow的方式
// 示例:這里我們直接添加數(shù)據(jù),Spire.XLS通常會自動識別并擴展表格。
// 6. 啟用表格的匯總行 (Total Row)
table.setShowTotalsRow(true);
// 7. 設(shè)置匯總行的計算方式 (例如,對 "總價" 列求和)
// 假設(shè) "總價" 是表格的第四列 (索引為3)
// 注意:TotalsCalculation枚舉定義了多種計算方式,如Sum, Average, Count等。
table.getColumns().get(3).setTotalsCalculation(ExcelTotalsCalculation.Sum);
// 可以為匯總行第一個單元格設(shè)置標簽
table.getColumns().get(0).setTotalsRowLabel("總計:");
// 8. 保存修改后的工作簿
workbook.saveToFile("ModifiedExcelTable.xlsx", ExcelVersion.Version2016);
System.out.println("Excel表格已成功修改,添加新行并啟用匯總!");
}
}
關(guān)鍵點提示
sheet.getListObjects().get(index)或sheet.getListObjects().getByName(name)可以獲取到工作表中的特定表格對象。- 通過直接操作
sheet.getCellRange()并緊鄰表格數(shù)據(jù)區(qū)域下方添加數(shù)據(jù),Spire.XLS通常會自動擴展表格范圍。 setShowTotalsRow(true)啟用匯總行,getColumns().get(columnIndex).setTotalsCalculation()則指定各列的匯總計算方式。
3. 有效刪除 Excel 表格
當不再需要某個表格時,我們可以選擇將其刪除。刪除表格意味著取消其結(jié)構(gòu)化特性,但通常會保留其數(shù)據(jù)內(nèi)容(變?yōu)槠胀▎卧駞^(qū)域)。
Spire.XLS for Java 實現(xiàn)
刪除表格是一個相對簡單的操作,只需獲取到表格對象,然后調(diào)用其 remove() 方法即可。
代碼示例
import com.spire.xls.*;
import com.spire.xls.core.IListObject;
public class DeleteExcelTable {
public static void main(String[] args) {
// 1. 加載一個包含表格的Excel文件
Workbook workbook = new Workbook();
workbook.loadFromFile("ModifiedExcelTable.xlsx"); // 使用上一步修改的文件
// 2. 獲取第一個工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 3. 獲取要刪除的表格對象 (例如,通過名稱 "銷售數(shù)據(jù)表")
IListObject tableToDelete = sheet.getListObjects().getByName("銷售數(shù)據(jù)表");
// 4. 刪除表格
if (tableToDelete != null) {
tableToDelete.remove();
System.out.println("Excel表格 '銷售數(shù)據(jù)表' 已成功刪除!");
} else {
System.out.println("未找到名為 '銷售數(shù)據(jù)表' 的表格。");
}
// 5. 保存修改后的工作簿
workbook.saveToFile("DeletedExcelTable.xlsx", ExcelVersion.Version2016);
}
}
注意事項
tableToDelete.remove()方法會刪除表格的結(jié)構(gòu)和功能(如篩選、樣式等),但表格內(nèi)的數(shù)據(jù)會保留在單元格中,成為普通的數(shù)據(jù)區(qū)域。- 在執(zhí)行刪除操作前,最好進行非空檢查,確保要刪除的表格確實存在。
總結(jié)
無論是批量生成帶有特定樣式的表格、動態(tài)更新數(shù)據(jù)、添加匯總行,還是按需移除不再需要的表格,Java Excel Automation 借助 Spire.XLS for Java 都能輕松應(yīng)對。掌握這些技能,將能有效提升你在數(shù)據(jù)處理、報表生成等方面的開發(fā)效率,解決實際工作中遇到的痛點。
到此這篇關(guān)于Java自動化實現(xiàn)在Excel工作表中創(chuàng)建、修改和刪除表格的文章就介紹到這了,更多相關(guān)Java操作Excel工作表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java多線程編程之InheritableThreadLocal
這篇文章主要為大家詳細介紹了java多線程編程之InheritableThreadLocal,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
Seata集成Mybatis-Plus解決多數(shù)據(jù)源事務(wù)問題
當進行業(yè)務(wù)操作時,訂單發(fā)生異常 ,進行了回滾操作,因為在不同的數(shù)據(jù)庫實例中,余額卻扣除成功,此時發(fā)現(xiàn)數(shù)據(jù)不一致問題,本文給大家介紹Seata集成Mybatis-Plus解決多數(shù)據(jù)源事務(wù)問題,感興趣的朋友一起看看吧2023-11-11
java 中的static關(guān)鍵字和final關(guān)鍵字的不同之處
java 中的static關(guān)鍵字和final關(guān)鍵字的不同之處,需要的朋友可以參考一下2013-03-03
spring boot 如何優(yōu)雅關(guān)閉服務(wù)
這篇文章主要介紹了spring boot 如何優(yōu)雅關(guān)閉服務(wù),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
Java?Controller實現(xiàn)參數(shù)驗證與統(tǒng)一異常處理流程詳細講解
Controller是Spring接受并處理網(wǎng)頁請求的組件,是整個應(yīng)用的入口,因此學會Controller的常用注解對理解一個應(yīng)用是重中之重。SpringBoot的Controller中經(jīng)常會用到注解@Controller、@RestController、@RequestMapping、@RequestBody等2023-01-01

