我正在使用POI編寫Java代碼,目的在於創建工作表並向其中添加數據。標準如下。關於創建工作表的困惑
我有一組文本文件,其關鍵字如下所示。
MainOne
MainTwo
而我正在循環可用表單並基於此關鍵字創建工作表。
如果沒有關鍵字匹配,我想將名爲no keyword
的工作表添加到工作簿中。並在每次迭代時檢查包含關鍵字的工作表是否可用,如果是,則使用它,如果不創建工作表。
主類
public static void main(String[] args) throws Exception {
FileInputStream fileInputStream = new FileInputStream(new File("KeyWords.txt"));
Scanner sc = new Scanner(fileInputStream);
while (sc.hasNextLine()) {
String line = sc.nextLine();
BasicExcel.createACell(line);
}
sc.close();
}
BasicExcel類
public static void createACell(String keyWord) throws IOException {
FileInputStream input_document = new FileInputStream(new File("C:\\Test\\new.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(input_document);
int noOfSheets = workbook.getNumberOfSheets();
HSSFSheet sheet = null;
for (int j = 0; j < noOfSheets; j++) {
if (!workbook.getSheetName(j).equalsIgnoreCase("No KeyWords")) {
sheet = workbook.createSheet("No KeyWords");
} else if (!workbook.getSheetName(j).equalsIgnoreCase(keyWord)) {
sheet = workbook.createSheet(keyWord);
} else {
sheet = workbook.getSheet(keyWord);
}
}
input_document.close();
FileOutputStream out = new FileOutputStream(new File("C:\\Test\\new.xls"));
try {
workbook.write(out);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
out.close();
workbook.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
,當我運行這個程序,我得到下面的異常。
java.lang.IllegalArgumentException異常:該工作簿已經包含在 org.apache.poi.hssf.usermodel.HSSFWorkbook.createSheet(HSSFWorkbook.java:877)命名爲 '保險' 一 板在BasicExcel.createACell (BasicExcel.java:22)在 EmailTestWithScanner.readEmails(EmailTestWithScanner.java:115)在 EmailTestWithScanner.main(EmailTestWithScanner.java:137) java.lang.IllegalArgumentException異常:工作簿中已經包含命名爲 'MMS' 在 片 org.apache.poi.hssf.usermodel.HSSFWorkbook.createSheet(HSSFWorkbook.java:877) at BasicExcel.crea teACell(BasicExcel.java:22)在 EmailTestWithScanner.readEmails(EmailTestWithScanner.java:115)在 EmailTestWithScanner.main(EmailTestWithScanner.java:137)
請讓我知道我要去哪裏錯了,怎麼能我修復它。
感謝
只有在你的循環 – Gagravarr
@Gagravarr年底創建的表,你的意思是'while'或'for'? – user3872094
表單上的for循環 – Gagravarr