簡體   English   中英

java.lang.IllegalArgumentException: 工作簿已包含此名稱的工作表

[英]java.lang.IllegalArgumentException: The workbook already contains a sheet of this name

插入超過 120 萬條記錄時出現異常。 已成功在 1 張表中插入 1 047 000 條記錄,當創建新表以插入其余記錄時,我得到

java.lang.IllegalArgumentException: 工作簿已包含此名稱的工作表

我正在使用此條件來創建新工作表

if(rowCount>1047000){
    wsSheet = createSheet(sheetName, xssfWorkbook);
    createHeader(wsSheet, columsnList, xssfWorkbook, null,listResult.isNameFieldRequired());
    rowCount = 1;
}

嘗試更改sheetName

wsSheet = createSheet(sheetName, xssfWorkbook) as sheetName+"1"

但仍然是同樣的例外。

org.apache.poi.ss.usermodel.Sheet檢查字符串是否已用作工作表名稱的方式有些奇怪:使用 name.substring(0, 31) 截斷候選名稱並與現有名稱進行比較以相同的方式截斷,因此您必須使字符串在此范圍內至少有一個字符不同。

XSSFSheet newSheetName = workbook.createSheet("sheetName"+1);

那應該很簡單。 然后根據您的代碼,您可能需要增加 newSheetName 變量范圍。

您可以插入日期時間而不是插入 1,因為它試圖一次添加所有記錄,因此采用相同的工作表名稱。

將以下代碼用於日期時間並在您的代碼中調用它代替 1

請參閱此代碼以獲取日期時間;

================================================== ==========

String dateTime=new Date().toString().replaceAll(":", "_");

wsSheet = createSheet(sheetName, xssfWorkbook) as sheetName+dateTime;

================================================== ====================

它應該工作。

如果不起作用,請使用帶毫秒的日期時間

希望有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM