使用Apache POI在Excel中插入行
瀏覽人數:1,247最近更新:
- Apache POI
- Excel
1.概述
有時,我們可能需要在Java應用程序中處理Excel文件。
在本教程中,我們將專門研究使用Apache POI庫在Excel文件的兩行之間插入新行。
2. Maven依賴
首先,我們必須將poi-ooxml Maven依賴項添加到我們的pom.xml文件中:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
3.在兩行之間插入行
3.1。 Apache POI相關的類
Apache POI是一個庫的集合-每個庫都專用於處理特定類型的文件。 XSSF
庫包含用於處理xlsx
Excel格式的類。下圖顯示了與Apache POI相關的接口和用於處理xlsx
Excel文件的類:
3.2。實施行插入
為了m
行,從插入點到最後一行的所有行都應向下移動m
行。
首先,我們需要讀取Excel文件。對於此步驟,我們使用XSSFWorkbook
類:
Workbook workbook = new XSSFWorkbook(fileLocation);
getSheet()
方法訪問工作簿中的工作表:
Sheet sheet = workbook.getSheetAt(0);
第三步是將行從當前要開始插入新行的位置移動到工作表的最後一行:
int lastRow = sheet.getLastRowNum();
sheet.shiftRows(startRow, lastRow, rowNumber, true, true);
在此步驟中,我們使用getLastRowNum()
方法獲取最後一個行號,並使用shiftRows()
方法移動行。 startRow
和lastRow
之間的行移動rowNumber
的大小。
最後,我們使用createRow()
方法插入新行:
sheet.createRow(startRow);
值得注意的是,以上實現將保留要移動的行的格式。另外,如果在我們要移動的範圍內有隱藏的行,則它們會在插入新行時移動。
3.3。單元測試
讓我們編寫一個測試用例,該用例讀取資源目錄中的工作簿,然後在位置2插入一行並將內容寫入新的Excel文件。最後,我們用主文件聲明結果文件的行號。
讓我們定義一個測試用例:
public void givenWorkbook_whenInsertRowBetween_thenRowCreated() {
int startRow = 2;
int rowNumber = 1;
Workbook workbook = new XSSFWorkbook(fileLocation);
Sheet sheet = workbook.getSheetAt(0);
int lastRow = sheet.getLastRowNum();
if (lastRow < startRow) {
sheet.createRow(startRow);
}
sheet.shiftRows(startRow, lastRow, rowNumber, true, true);
sheet.createRow(startRow);
FileOutputStream outputStream = new FileOutputStream(NEW_FILE_NAME);
workbook.write(outputStream);
File file = new File(NEW_FILE_NAME);
final int expectedRowResult = 5;
Assertions.assertEquals(expectedRowResult, workbook.getSheetAt(0).getLastRowNum());
outputStream.close();
file.delete();
workbook.close();
}
4。結論
總之,我們已經學習瞭如何使用Apache POI庫在Excel文件的兩行之間插入一行。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議