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が:ワークブックがすでにBasicExcel.createACellで org.apache.poi.hssf.usermodel.HSSFWorkbook.createSheet(HSSFWorkbook.java:877) で '保険' という名前 シートが含まれています(BasicExcel.java:22) EmailTestWithScanner.main(EmailTestWithScanner.java:137) java.lang.IllegalArgumentExceptionがで EmailTestWithScanner.readEmails(EmailTestWithScanner.java:115)で:ワークブックがすでにで 'MMS' という名前 シートが含まれています org.apache.poi.hssf.usermodel.HSSFWorkbook.createSheet(HSSFWorkbook.java:877)at BasicExcel.crea teACell EmailTestWithScanner.main(EmailTestWithScanner.java:137)で EmailTestWithScanner.readEmailsで(BasicExcel.java:22)(EmailTestWithScanner.java:115)
ができ、私はどこが間違っているつもりです知っているとどのようにしてください私が直します。
おかげ
あなただけが 'while'または' for'を意味し、あなたのループ – Gagravarr
@Gagravarrの最後にシートを作成しますか? – user3872094
シート上のforループ – Gagravarr