复制日期格式单元格到数据表excellibrary

本文关键字:数据表 excellibrary 单元格 日期 格式 复制 | 更新日期: 2023-09-27 18:16:57

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

02/07/1984 -> 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;
        }

复制日期格式单元格到数据表excellibrary

您看到的数字是OLE Automation Date,您需要使用DateTime.FromOADate Method将该数字转换为DateTime:

DateTime dt = DateTime.FromOADate(30865); //dt = {02/07/1984 12:00:00 AM}

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