是因为在导出过程中没有正确处理数据的格式。System.Data.DataRowView是数据绑定时的默认显示格式,而不是实际的数据值。
要解决这个问题,可以使用以下步骤:
以下是一个示例代码,使用NPOI库将DataGrid表导出到MS Excel:
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.IO;
// 获取DataGrid中的数据源
var dataGridItemsSource = dataGrid.ItemsSource as IEnumerable;
// 创建一个新的Excel文件
var workbook = new HSSFWorkbook();
var sheet = workbook.CreateSheet("Sheet1");
// 写入表头
var headerRow = sheet.CreateRow(0);
for (int i = 0; i < dataGrid.Columns.Count; i++)
{
var cell = headerRow.CreateCell(i);
cell.SetCellValue(dataGrid.Columns[i].Header.ToString());
}
// 写入数据
int rowIndex = 1;
foreach (var item in dataGridItemsSource)
{
var dataRow = sheet.CreateRow(rowIndex);
for (int i = 0; i < dataGrid.Columns.Count; i++)
{
var cell = dataRow.CreateCell(i);
var binding = dataGrid.Columns[i].ClipboardContentBinding as System.Windows.Data.Binding;
var propertyPath = binding.Path.Path;
var propertyInfo = item.GetType().GetProperty(propertyPath);
var value = propertyInfo.GetValue(item);
cell.SetCellValue(value?.ToString());
}
rowIndex++;
}
// 导出Excel文件
using (var fileStream = new FileStream("ExportedData.xls", FileMode.Create))
{
workbook.Write(fileStream);
}
在这个示例中,我们使用NPOI库创建一个新的Excel文件,并将DataGrid中的数据写入到Excel文件中。最后,将生成的Excel文件保存为"ExportedData.xls"。
推荐的腾讯云相关产品:腾讯云对象存储(COS),用于存储和管理导出的Excel文件。您可以通过以下链接了解更多关于腾讯云对象存储的信息:腾讯云对象存储(COS)产品介绍。
领取专属 10元无门槛券
手把手带您无忧上云