私はApache-Poiを初めて使用し、3.8バージョンのpoiを使用しています。 Excelで値を書いている間、私はそれらが一致した場合、私は列の名前を確認し、私はその列にいくつかの値を書き込み、それを終了し、再び私はヘッダーに書き始めます。問題は、3つの列の値を書き込むと、最後の列の値だけが追加または保存され、最初の2つの値が列に保存されないということです。誰が何がうまくいかないかを教えてくれる? (申し訳ありませんが、ケース内の任意のミス)書き込み中にExcelに値が入力されない
Code:
int i = 0;
Row row = sheet.createRow(i);
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_ORANGE.index);
String validate_header = null;
while (iterator.hasNext()) {
if (eiterator.hasNext()) {
validate_header = eiterator.next();
}
Cell cell = row.createCell(i);
String col_heading = iterator.next();
cell.setCellValue(col_heading);
if(col_heading.equalsIgnoreCase("Assigned Date"))
{
Add_value(i, col_heading, row, sheet);
row=sheet.getRow(0);
cell=row.getCell(i);
}
else if(col_heading.startsWith("Review"))
{
int count=-1;
int n=Col_values.get("Defect Summary").size();
for (int j = 0; j < n; j++) {
row = sheet.createRow(count);
cell = row.createCell(i);
String s="External QC Defect ";
cell.setCellValue(s);
count++;
}
row=sheet.getRow(0);
cell=row.getCell(i);
}
sheet.autoSizeColumn(i);
i++;
}
private static Sheet Add_value(int k,String name,Row row, Sheet sheet) {
System.out.println("Inside the add method");
if(name.equalsIgnoreCase("Assigned Date")||name.equalsIgnoreCase("Reported Date"))
{
vector = Col_values.get("TargetDate");
int count = 1;
System.out.println("IF Size of the vector " + vector.size());
for (int j = 0; j < vector.size(); j++) {
row = sheet.createRow(count);
cell = row.createCell(k);
String s = (String) vector.get(j);
System.out.println(s);
cell.setCellValue(s);
count++;
}
}
else
{
vector = Col_values.get("Defect Summary");
int count = 1;
System.out.println("ELSE Size of the vector " + vector.size());
for (int j = 0; j < vector.size(); j++) {
row = sheet.createRow(count);
cell = row.createCell(k);
String s = (String) vector.get(j);
System.out.println(s);
cell.setCellValue(s);
count++;
}
}
return sheet;
}
「
uは何が悪かったのか教えてください。
コードがあると
置き換えますか?私たちはどこで間違っているかを知っている –
申し訳ありません。私は今追加しました。 – Loga
コードを最初から書き直すだけです。オープンエンド(イテレータ)が多すぎ、ローカル目的が多すぎます(createRowを使用)。また、Javaの規約に従う方が良いでしょう(つまり、ここでは受け入れられます)。スペースの使用量が増えると、 'camelCaseNames' i.o. 'Capitalized_underscored_ones'。あなたは特定の目的のために小さな機能でトップダウンデザインを使用することができます。 _理由を理解する:醜いPOIでの最初の実験。 –