【发布时间】:2021-11-03 15:58:34
【问题描述】:
我想将一个 Excel 文件加载到我的 DataGrid 中。使用ClosedXML。
我有这个方法:
public static DataTable ImportExceltoDataTable(string filePath, string sheetName) {
using (XLWorkbook wb = new(filePath)) {
IXLWorksheet ws = wb.Worksheet(1);
DataTable dt = new();
bool firstRow = true;
foreach (IXLRow row in ws.Rows()) {
if (firstRow) {
foreach (IXLCell cell in row.Cells()) {
dt.Columns.Add(cell.CachedValue.ToString());
}
firstRow = false;
} else {
dt.Rows.Add();
int i = 0;
foreach (IXLCell cell in row.Cells(row.FirstCellUsed().Address.ColumnNumber, row.LastCellUsed().Address.ColumnNumber)) {
dt.Rows[dt.Rows.Count - 1][i} = cell.CachedValue.ToString();
i++;
}
}
}
return dt;
}
}
这是我的点击事件:
OpenFileDialog of = new();
of.Filter = "Excel Files | *.xlsx;";
of.Title = "Import Excel file.";
if (of.ShowDialog()==true) {
dataGrid.ItemsSource = ImportExceltoDataTable("...", "...").DefaultView;
}
我正在努力实现以下目标
- 单击一个按钮,选择一个 Excel 文件,将其内容填充到我的
DataGrid。
添加@mm8提供的解决方案后更新:
我现在收到Empty extension is not supported 错误,因为我不知道如何将点击事件的OpenFileDialog-selection 连接到DataTable 的启动。
非常感谢您的帮助!
【问题讨论】:
-
“绑定”是什么意思?如果将方法返回的值写入属性;此属性通过 INotifyPropertyChanged.PropertyChanged 事件通知其更改;并在 XAML 中元素的 UI 属性设置 {Binding ....} 从这个属性与 DataTable - 那么应该没有任何问题。