我已经编写了一个使用java将数据写入excel的代码,但是,它没有增加roe值,导致在第1行本身覆盖数据。我知道问题出在rownum
数递增。
import java.util.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.*;
import java.io.*;
public class ExcelWriter {
static int rownum;
@Test
public void ExcelWriters(Integer i, String CableName, String Count,
String EndCableId, String FirstCableId) {
rownum = i;
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("WhileTrue");
Map < Integer, Object[] > data = new HashMap < Integer, Object[] > (); {
data.put(i, new Object[] {
"Sr.no",
"Cable",
"Total Count",
"EndCableId",
"FirstCableId"
});
data.put(i, new Object[] {
i,
CableName,
Count,
EndCableId,
FirstCableId
});
Set < Integer > keyset = data.keySet();
for (Integer key: keyset) {
HSSFRow row = sheet.createRow(rownum++);
Object[] objArr = data.get(key);
int cellnum = 0;
for (Object obj: objArr) {
HSSFCell cell = row.createCell(cellnum++);
if (obj instanceof Date)
cell.setCellValue((Date) obj);
else if (obj instanceof Boolean)
cell.setCellValue((Boolean) obj);
else if (obj instanceof String)
cell.setCellValue((String) obj);
else if (obj instanceof Double)
cell.setCellValue((Double) obj);
}
}
try {
FileOutputStream outputStream =
new FileOutputStream((new File("FilePath")));
workbook.write(outputStream);
outputStream.close();
System.out.println("Excel written Successfully");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
答案 0 :(得分:1)
使用data.put(i,new Object[]{...}
两次,地图仅包含给定键i
的最后一个值,(即)您覆盖列&#39;名。
将第一个put(i,YOUR_COL_NAMES);
更改为put(0,YOUR_COL_NAMES);
答案 1 :(得分:0)
我只在poi图书馆工作一次,所以我对此知之甚少,但看到你的代码我觉得问题是什么 -
使用这段代码后
data.put(i, new Object[] {
"Sr.no",
"Cable",
"Total Count",
"EndCableId",
"FirstCableId"
});
你必须增加i的值,因为当你将两个数据行放在同一个地方的一个excel行时