我已经使用Apache POI一段时间以编程方式读取现有的Excel 2003文件.现在我有了一个新的要求,即在内存中创建整个.xls文件(仍使用Apache POI),然后将它们写入文件末尾.阻碍我的唯一问题是处理带日期的细胞.
请考虑以下代码:
Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);
Run Code Online (Sandbox Code Playgroud)
当我将包含此单元格的工作簿写入文件并使用Excel打开时,单元格显示为数字.是的,我确实认识到Excel将其"日期"存储为自1900年1月1日以来的天数,这就是单元格中的数字所代表的数字.
问题:我可以在POI中使用哪些API调用来告诉它我需要将默认日期格式应用于我的日期单元格?
理想情况下,如果用户在Excel中手动打开电子表格并键入Excel识别为日期的单元格值,我希望电子表格单元格显示的Excel默认日期格式与Excel分配的格式相同.
我正在使用Apache POI读取部件号电子表格中的数据.我在我们的数据库中查找零件编号,如果我们有零件的CAD图纸我将零件编号单元格颜色为绿色,如果我们不对其进行颜色红色.处理完成后,将保存电子表格.我遇到的问题是该列中的每个单元格都是绿色的.我已经逐步完成了代码,查找部件号的逻辑工作正常,确定单元应该是什么颜色以及设置颜色和填充的逻辑似乎也可以工作.我在这里做错了什么想法?
谢谢.
//Check the parts
for(int r=1;r<sheet.getPhysicalNumberOfRows();r++) {
String partNumber = null;
switch(cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
long pNum = (long) cell.getNumericCellValue();
partNumber = String.valueOf(pNum);
break;
case HSSFCell.CELL_TYPE_STRING:
partNumber = cell.getStringCellValue();
break;
default:
logger.info("Part Number at row " + r + " on sheet " + partList.getSheetName(s) + "is of an unsupported type");
}
try {
List<String> oldMaterialNumbers = getOldMaterialNumbers(partNumber);
boolean gotDrawing = checkPartNumber(oldMaterialNumbers, partNumber);
//If there's a drawing then color the row green, if not red.
short bgColorIndex = …Run Code Online (Sandbox Code Playgroud)