当我通过java创建excel表时,number
oracle表中具有数据类型的列,text
在excel中转换为格式。我希望它保持格式。number
下面是我创建excel的代码片段。
public boolean prepareExcelFilefromQuery(String chanType,
Collection<List> queryDataRowWise, HttpServletResponse response)
{
List<String> queryDataColWise;
HSSFRow row = null;
HSSFCell cell = null;
Integer rowCounter = 0;
Integer colCounter;
boolean success = false;
try {
Iterator<List> rowIterator = queryDataRowWise.iterator();
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet(chanType + " Report");
System.out.println("First row/..." + sheet.getFirstRowNum());
while (rowIterator.hasNext()) {
colCounter = 0;
queryDataColWise = (List) rowIterator.next();
Iterator colIterator = queryDataColWise.iterator();
row = sheet.createRow(rowCounter++);
while (colIterator.hasNext()) {
cell = row.createCell(colCounter++);
Object o = colIterator.next();
if (o instanceof java.lang.String) {
String s = (String) o;
cell.setCellValue(s);
} else if (o instanceof java.lang.Double) {
Double d = (Double) o;
cell.setCellValue(d);
} else if (o instanceof java.lang.Integer) {
Integer i = (Integer) o;
cell.setCellType(cell.CELL_TYPE_NUMERIC);
cell.setCellValue(i);
} else if (o instanceof java.util.Date) {
Date date = (Date) o;
SimpleDateFormat FORMATTER;
FORMATTER = new SimpleDateFormat("MM/dd/yyyy");
String date11 = FORMATTER.format(date);
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat
.getBuiltinFormat("m/d/yy"));
cell.setCellStyle(cellStyle);
cell.setCellValue(FORMATTER.parse(date11));
}
}
}
workbook.write(response.getOutputStream());
success = true;
} catch (Exception e) {
logger.debug(
"Exception caught in prepareExcelFilefromQuery class ", e);
System.out
.println("Exception caught in prepareExcelFilefromQuery class ");
e.printStackTrace();
}
}
return success;
}