欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 使用 Net 处理 Excel 文件的时间列

使用 Net 处理 Excel 文件的时间列

2025/3/9 9:50:47 来源:https://blog.csdn.net/linyustar/article/details/146056912  浏览:    关键词:使用 Net 处理 Excel 文件的时间列

  前言

  最近,处理Excel的情况比较多,然后,就碰到了时间列,读取出来时中文,保存到数据库中着实麻烦,就找了下如何解决这个问题。

  正文

  1.这是读取Excel时候,调试的时候,时间列的格式,如下图:

  2.分享下原始读取Excel的公共方法,其实,也只能说这个方法写的有问题,所有列都按照字符串处理的,如下图:

 1 public static DataTable LoadExcelFile(IWorkbook workbook, string sheetName, bool isFirstRowColumn)2 {3     ISheet sheet = null;4     DataTable data = new DataTable();5     int startRow = 0;6     int cellCount = 0;7     int rowCount = 0;8 9     try
10     {
11 
12         if (sheetName != null)
13         {
14             sheet = workbook.GetSheet(sheetName);
15         }
16         else
17         {
18             sheet = workbook.GetSheetAt(0);
19         }
20 
21         if (sheet != null)
22         {
23             IRow firstRow = sheet.GetRow(0);
24             cellCount = firstRow.LastCellNum;
25             if (isFirstRowColumn)
26             {
27                 for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
28                 {
29                     DataColumn column = new DataColumn(firstRow.GetCell(i).StringCellValue);
30                     data.Columns.Add(column);
31                 }
32                 startRow = sheet.FirstRowNum + 1;
33             }
34             else
35             {
36                 startRow = sheet.FirstRowNum;
37             }
38 
39             rowCount = sheet.LastRowNum;
40 
41             for (int i = startRow; i <= rowCount; ++i)
42             {
43                 IRow row = sheet.GetRow(i);
44                 if (row == null)
45                 {
46                     continue;
47                 }
48 
49                 DataRow dataRow = data.NewRow();
50                 for (int j = row.FirstCellNum; j < cellCount; ++j)
51                 {
52                     ICell cell = row.GetCell(j);
53                     if (cell != null)
54                     {
55                         dataRow[j] = cell.ToString();
56                     }
57                 }
58                 data.Rows.Add(dataRow);
59             }
60         }
61         return data;
62     }
63     catch (Exception ex)
64     {
65         Console.WriteLine("Exception: " + ex.Message);
66         return null;
67     }
68 }

  3.我们看一下上面代码里黄色背景的部分,就是写入DataTable的部分,其实简单的判断一下,如果是数字类型又能格式化成时间的情况,就按照时间格式读取就行了,如下图:

for (int j = row.FirstCellNum; j < cellCount; ++j)
{ICell cell = row.GetCell(j);if (cell != null){if (cell.CellType == CellType.Numeric && DateUtil.IsCellDateFormatted(cell))dataRow[j] = cell.DateCellValue.ToString();elsedataRow[j] = cell.ToString();}
}

  4.我们再调试一下代码,时间格式就是正经的时间格式了,如果还不符合要求,就可以用net的转换时间函数再加工一下就行了,如下图:

  结束语

  其实,我们读取Excel的时候,不仅仅时间格式,其他格式也需要特别的处理,大家可以参考这个例子,举一反三一下。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词