【发布时间】:2015-07-28 21:55:05
【问题描述】:
我正在从 Excel 文件中导入数据并将其转换为我正在使用的数据集(有点)。我遇到的问题是 Excel 中的两个字段是日期,但是当我进行导入时,它们会变成数字,我不知道如何将它们恢复为日期。最后两列是日期列(HDate 和 CDate)。
这是代码
private void FillDatagrid()
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"\\Server01\Ins\Eligible.xls");
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
DataTable table = new DataTable("Employees");
table.Columns.Add("StoreID");
table.Columns.Add("EmpID");
table.Columns.Add("EmpName");
table.Columns.Add("Position");
table.Columns.Add("HDate");
table.Columns.Add("CDate");
int rowCount = xlRange.Rows.Count;
for (int i = 2; i <= rowCount; i++)
{
table.Rows.Add(
xlRange.Cells[i, 1].Value2.ToString(),
xlRange.Cells[i, 2].Value2.ToString(),
xlRange.Cells[i, 3].Value2.ToString(),
xlRange.Cells[i, 4].Value2.ToString(),
xlRange.Cells[i, 5].Value2.ToString(),
xlRange.Cells[i, 5].Value2.ToString());
}
DataSet ds = new DataSet();
ds.Tables.Add(table);
dataGrid.ItemsSource = ds.Tables["Employees"].DefaultView;
}
据我所知,Value2 只会转换为字符串。
注意 #1 虽然我在本示例中将此数据放入 DataGrid 中,但在实际代码块中并没有这样做。我只是想提一下,这样看来这似乎无法通过 XAML 等格式进行修复。
注意 #2 我意识到我有 xlRange.Cells[i, 5].Value2.ToString() 两次。我这样做是为了解决第 6 列有空值的问题,这是我的导入不喜欢的。我计划在解决这个问题后回到那个状态。
注意 #3 当我说我将日期作为字符串获取时,我的意思是它作为字符串来自 Excel,但被格式化为数字,因此,例如,单元格数据有一个日期比如 2015 年 6 月 30 日,但它出现在我的数据集中,比如 42185。
【问题讨论】:
标签: c# excel-interop