作者:乔山办公网日期:
返回目录:excel表格制作
读取excel文件中日期内容是通过poi获取的,代码如下:
HSSFWorkbook excbook = new HSSFWorkbook(ExcFile);
//获取第一e69da5e6ba90e79fa5e98193362个sheet页 HSSFSheet excSheet = excbook.getSheetAt(0);
//获取第一行
HSSFRow oneRow = excSheet.getRow(0);
//获取第一行的第一个表格
HSSFCell oneCell = oneRow.getCell(0);
switch (oneCell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if(HSSFDateUtil.isCellDateFormatted(oneCell)){
String str = sdf.format(HSSFDateUtil.getJavaDate(oneCell.getNumericCellValue())).toString();
System.out.println(str);
}
break;
}
这个问题很简单!首先,用apachePOI找到对应的列,然后读取出来看看什么情况,如果是乱码,你就用InputstreamReader改变编复码格式,有那个构造方法,如果是数字能正确显示,但是有错位等情况制,那就索性把图表中的东西都读出来,然后正则表达式匹配出来,即使你有2列以百上日期,正则也能处理。或者也有可能你excel中日期和他本身vba相关,这个poi可能会出错,我就不知道怎么弄了,不过所有文件都读出来,然后正则一般的问题都能搞定。如果你文件太大,造成内存度溢出,那我推荐你用perl
在Excel中的日期格式,比如2009-12-24将其转化为数字格式时变成了40171,在用java处理的时候,读取的也将是40171。
如果e5a48de588b67a64334使用POI处理Excel中的日期类型的单元格时,如果仅仅是判断它是否为日期类型的话,最终会以NUMERIC类型来处理。正确的处理方法是先判断单元格的类型是否则NUMERIC类型,然后再判断单元格是否为日期格式,如果是的话,
创建一个日期格式,再将单元格的内容以这个日期格式显示出来。如果单元格不是日期格式,那么则直接得到NUMERIC的值就行了。具体代码如下:
if (0 == cell.getCellType()) {
//判断是否为日期类型
if(HSSFDateUtil.isCellDateFormatted(cell)){
//用于转化为日期格式
Date d = cell.getDateCellValue();
DateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
str[k] = formater.format(d);
}else{
// 用于格式化数字,只保留数字的整数部分
DecimalFormat df = new DecimalFormat("########");
str[k] = df.format(cell.getNumericCellValue());
}
这个来问题我也遇到过 excle读取日期 导入到源数据库里面的的日百期格式度就是12-6-27 所以要做下处理知 给你个例子: import com.ibm.icu.text.SimpleDateFormat; class p{ public static void main(String[] args) { String s= "12-07-03";//你取得的日道...