C# 将日期格式单元格复制到datatable Excel库

C# 将日期格式单元格复制到datatable Excel库,c#,excel,excellibrary,C#,Excel,Excellibrary,我正在用C#开发一个程序,这是一个桌面应用程序。 我有一个问题,我正在使用excellibrary打开excel并将数据复制到datatable,但我有一个日期格式为mm/dd/yyyy的单元格,但当我在datagridview中显示datatable时,此信息将更改为数字,例如: 1984年7月2日->30865 这是我的密码,希望有人能帮我 private DataTable ConvertToDataTable(string FilePath) {

我正在用C#开发一个程序,这是一个桌面应用程序。 我有一个问题,我正在使用excellibrary打开excel并将数据复制到datatable,但我有一个日期格式为mm/dd/yyyy的单元格,但当我在datagridview中显示datatable时,此信息将更改为数字,例如:

1984年7月2日->30865

这是我的密码,希望有人能帮我

private DataTable ConvertToDataTable(string FilePath)
        {
            string file = FilePath;
            // open xls file
            Workbook book = Workbook.Open(file);
            Worksheet sheet = book.Worksheets[0];

            DataTable dt = new DataTable();
            // traverse rows by Index
            for (int rowIndex = sheet.Cells.FirstRowIndex; rowIndex <= sheet.Cells.LastRowIndex; rowIndex++)
            {

                Row row = sheet.Cells.GetRow(rowIndex);
                object[] temparray = new object[row.LastColIndex + 1];
                for (int colIndex = row.FirstColIndex;
                   colIndex <= row.LastColIndex; colIndex++)
                {
                    Cell cell = row.GetCell(colIndex);
                    temparray[colIndex] = cell.Value;
                }
                if (rowIndex == 0)
                {
                    foreach (object obj in temparray)
                    {
                        dt.Columns.Add(obj.ToString());
                    }
                }
                else
                {
                    dt.Rows.Add(temparray);
                }

            }

            return dt;
        }
私有数据表ConvertToDataTable(字符串文件路径)
{
字符串文件=文件路径;
//打开xls文件
工作簿=工作簿。打开(文件);
工作表=书本。工作表[0];
DataTable dt=新的DataTable();
//按索引遍历行

对于(int rowIndex=sheet.Cells.FirstRowIndex;rowIndex您看到的数字是OLE Automation Date,您需要使用以下命令将该数字转换为
DateTime


要在当前代码中使用该方法,您必须检查每个列的值,并为日期索引,将值解析为
DateTime
,然后将其添加到
DataTable

谢谢,您的回答对我很有帮助,我希望其他面临相同问题的人看到您的答案
DateTime dt = DateTime.FromOADate(30865); //dt = {02/07/1984 12:00:00 AM}