如何使用 DataTable 作为我的 DataGrid 的 ItemsSource
How to use DataTable as ItemsSource of my DataGrid
我想将 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
选择与 DataTable
的启动联系起来。
非常感谢任何帮助!
您可以将 ItemsSource
设置为 DataTable
的 DefaultView
:
dataGrid.ItemsSource = ImportExceltoDataTable("...", "...").DefaultView;
与 DataTable
不同,DataView
实现了所需的 IEnumerable
接口。
我想将 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
选择与 DataTable
的启动联系起来。
非常感谢任何帮助!
您可以将 ItemsSource
设置为 DataTable
的 DefaultView
:
dataGrid.ItemsSource = ImportExceltoDataTable("...", "...").DefaultView;
与 DataTable
不同,DataView
实现了所需的 IEnumerable
接口。