关键代码如下:
public static DataTable ExcelToDt(string filePath, bool isSkipFirstRow, int cols, string logBusiness)
if (!string.IsNullOrEmpty(filePath))
DataTable dt = new DataTable();
for (int col = 0; col < cols; col++)
dt.Columns.Add(col.ToString(), Type.GetType("System.String"));
Stream stream = new FileStream(filePath, FileMode.Open);
using (stream)
ExcelPackage package = new ExcelPackage(stream);
ExcelWorksheet sheet = package.Workbook.Worksheets[1];
int startRowIndx = sheet.Dimension.Start.Row + (isSkipFirstRow ? 1 : 0);
for (int r = startRowIndx; r <= sheet.Dimension.End.Row; r++)
DataRow dr = dt.NewRow();
for (int c = sheet.Dimension.Start.Column; c <= sheet.Dimension.End.Column; c++)
if (sheet.Cells[r, c].Style.Numberformat.Format.IndexOf("yyyy") > -1
&& sheet.Cells[r,c].Value!=null)//注意这里,是处理日期时间格式的关键代码
dr[c - 1] = sheet.Cells[r, c].GetValue<DateTime>();
dr[c - 1] = (sheet.Cells[r, c].Value ?? DBNull.Value);
dt.Rows.Add(dr);
return dt;
catch (Exception ex)
log.WriteLog(string.Concat(new string[]
LogConst.SEPARATION,
logBusiness,MSG,
LogConst.SEPARATION,
Environment.NewLine,
ex.Message,
Environment.NewLine
return null;
return null;
当我们用EPPlus导入Excel数据到DataTable中,如果某列是DateTime格式 ,我们应该如何处理呢?解决思路:1、首先要获取excel中的列的格式类型2、判断格式类型是否是日期时间关键代码如下:public static DataTable ExcelToDt(string filePath, bool isSkipFirstRow, int cols, s
EPPlus 是.net的一个操作Excel的插件,封装了针对Excel的读取、写入等操作,并且该项目还是开源的。关于EPPlus的更多介绍我就不赘述了,可查看:http://epplus.codeplex.com/
这里我简单的介绍如何将Excel的Sheet转换成DataTable,关于安装和其他的相关操作请谷歌或者百度下。
using System;
using System.Coll...
public static object ChangeEPPlusCell(ExcelRange cell)
if (null == cell.Value) return null;
if (cell.Style.Numberformat.Format.IndexOf("yyyy") > -1 || (cell.Style.Numberformat.Format.IndexOf("月")
上篇说到,用NPOI导到.xlsx之后总是存在“文件已损坏”的提示,很烦。后来查了一下,最好是用NPOI导到.xls,用EPPLUS导到.xlsx。所以今天记录一下如何使用EPPLUS将dataTable导入excel2007的文件。
首先还是如何添加引用
然后添加引用,就是最后一行 using OfficeOpenXml;
using System;
using System.Colle...
没错,依旧是这个美好的下着小雨可以睡懒觉的周六!
之前项目中写的dataTable列表要求按照创建日期进行排序,but虽然现在可以进行创建日期排序了,是在js中使用下面的代码配置的。
//5是时间字段所在的列号-1
"aaSorting": [[5, "desc" ]]
但是!最离谱的就是,这个只能对日期进行排序,乍一听没问题啊。问题在于,这个不能精确到时间啊,也就是说我按照天来可以对列表中的数据进行倒序排序,但是在一天内创建的数据他不能排序啊,听听听听,这多多少少有点气人的感觉了
double TimeNow = 44210;
DateTime dt = new DateTime(1899, 12, 30);
dt = dt.AddDays(TimeNow);
Console.WriteLine(dt.ToString("dd/MM/yyyy"));
public Stream DataTableToExcel(DataTable dataTable, string[] columns, string sheetName)
using (ExcelPackage pck = new...
public static DataSet ReadExcelToDataSet(string filePath, string sheetName)
DataSet ds = new DataSet();
DataRow dr;
object objCellValue;
strin...
2.在管理NuGet程序包中搜索EPPlus,点击进行安装,安装后便直接添加到引用了
二、在一般处理程序中使用EPPlus的OfficeOpenXml命名空间,进行datatable到excel的处理
先上张将datatable的数据导出到excel效果图
下面贴代码:
/// 将excel中的数据导入到DataTable中
/// </summary>
/// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param>
/// <returns>...
```csharp
dataTable.DefaultView.Sort = "列名 ASC|DESC";
dataTable = dataTable.DefaultView.ToTable();
其中,`ASC`表示按升序排列,`DESC`表示按降序排列,列名需要替换成您的实际列名。这段代码会将排序后的结果存储在新的DataTable中,您可以将其用于数据绑定或其他操作。