我試圖將數據從數據庫導出到Excel。我有導出的數據,當前存儲在一個ArrayList中(這可以更改)。我已經能夠將數據導出爲excel,但所有值都以字符串形式導出,我需要它們保留其數據類型,即貨幣/數字。使用POI將不同的數據類型寫入excel
我正在使用Apache POI,並且難以將字段的數據類型設置爲字符串以外的任何其他字段。我錯過了什麼嗎?有人可以建議我以更好的方式做到這一點?任何援助對此將不勝感激。
public static void importDataToExcel(String sheetName, ArrayList header, ArrayList data, File xlsFilename, int sheetNumber)
throws HPSFException, FileNotFoundException, IOException {
POIFSFileSystem fs = new POIFSFileSystem();
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(xlsFilename));
HSSFSheet sheet = wb.createSheet(sheetName);
int rowIdx = 0;
short cellIdx = 0;
// Header
HSSFRow hssfHeader = sheet.createRow(rowIdx);
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
for (Iterator cells = header.iterator(); cells.hasNext();) {
HSSFCell hssfCell = hssfHeader.createCell(cellIdx++);
hssfCell.setCellStyle(cellStyle);
hssfCell.setCellValue((String) cells.next());
}
// Data
rowIdx = 1;
for (Iterator rows = data.iterator(); rows.hasNext();) {
ArrayList row = (ArrayList) rows.next();
HSSFRow hssfRow = (HSSFRow) sheet.createRow(rowIdx++);
cellIdx = 0;
for (Iterator cells = row.iterator(); cells.hasNext();) {
HSSFCell hssfCell = hssfRow.createCell(cellIdx++);
hssfCell.setCellValue((String) cells.next());
}
}
Logfile.log("sheetNumber = " + sheetNumber);
wb.setSheetName(sheetNumber, sheetName);
try {
FileOutputStream out = new FileOutputStream(xlsFilename);
wb.write(out);
out.close();
} catch (IOException e) {
throw new HPSFException(e.getMessage());
}
}
你把什麼放到你的'List's中,它們都是原始的 - 你如何填充它們? – 2013-03-08 15:58:30
爲什麼不把字符串解析成數字,然後用double來調用'setCellValue'? – Gagravarr 2013-03-08 16:00:55
該列表是從數據庫查詢返回的結果。標題列表只是字符串,數據列表是雙精度和字符串的組合。 – user1274028 2013-03-08 16:01:00