A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一蓑烟雨任平生 中级黑马   /  2012-8-23 11:59  /  11844 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

excel中有日期和普通数字,读取的时候都是CellType.NUMERIC,都是数字格式,怎么区分是数字还是日期呢?

4 个回复

倒序浏览

回帖奖励 +10

public static void read_excel( )
{
      using(FileStream stream = new FileStream(@"c:\20120823.xls",FileMode.OpenOrCreate,FileAcess.ReadWrite))
      {
             HSSFWorkbook wb = new HSSFWorkbook(stream);
             HSSFSheet sheet = wb.GetSheetAt(0);
             HSSRow row = sheet.GetRow(0);
             for(int i=0;i<row.LastCellNum;i++)
            {
                  HSSFCell cell = row.GetCell(i);
                  switch(cell.CellType) //根据单元格的数据格式提取数据
                  {
                         case 1: Console.WriteLine(cell.StringCellValue);
                                break;
                         case 0: Console.WriteLine(cell.NumericCellValue);
                                break;
                         case 4: Console.WriteLine(cell.BooleanCellValue);
                                break;
                         case 5: Console.WriteLine(cell.ErrorCellValue);
                                break;
                         default:
                                   Console.WriteLine("没有值");
                                   break;
                  }
               }
           }
}
回复 使用道具 举报
许庭洲 发表于 2012-8-23 13:22
public static void read_excel( )
{
      using(FileStream stream = new FileStream(@"c:\20120823.xls" ...

你这样读出来,日期是按照数字读的,我想问的是怎么把日期读出来,因为日期和数字在celltype中都是Numeric类型的,如果一个excel文档中同时有数字和日期,我怎么弄,读出来的时候,日期还是日期,数字还是数字呢?
回复 使用道具 举报
一蓑烟雨任平生 发表于 2012-8-23 15:32
你这样读出来,日期是按照数字读的,我想问的是怎么把日期读出来,因为日期和数字在celltype中都是Numeri ...

1. 如果该单元格是一个double值,那么就要用 DateTime.FromOADate(double.Parse(range.Value2.ToString()));方法获得时间;
2.如果就是一个时间,那么就直接DateTime.Parse(range.Value2.ToString());就可以了。
回复 使用道具 举报
许庭洲 发表于 2012-8-23 15:45
1. 如果该单元格是一个double值,那么就要用 DateTime.FromOADate(double.Parse(range.Value2.ToString() ...

我想问的是,如果在我不知道的前提下,日期和数字的celltype都是numeric类型,那么应该怎么判断他到底是日期类型还是数字类型啊,如果直接cell.numericCellValue取的话那不是把日期也按数字读了吗?如果用cell.datecellvalue,那就把数字读成日期,此时如果插入数据库,就会出错了。唉,表达有问题啊,一个问题问了这么多遍,见谅!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马