2

我需要将 datgrid 导出到 excel 文档,但这样做时遇到错误。下面是我用来导出的代码,它打开了 Excel 文档,并且标题就位,但是每个单元格中的值应该是我在 Excel 单元格中看到 System.Data.DataRowView 的位置。我需要做的是从帽子行中获取值并将它们插入到 Excel 工作簿中。

任何帮助表示赞赏,或教程链接。

彼得

Microsoft.Office.Interop.Excel.Application excel = null;
Microsoft.Office.Interop.Excel.Workbook wb = null;

object missing = Type.Missing;
Microsoft.Office.Interop.Excel.Worksheet ws = null;
Microsoft.Office.Interop.Excel.Range rng = null;

try
{
    excel = new Microsoft.Office.Interop.Excel.Application();
    wb = excel.Workbooks.Add();
    ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;

    for (int Idx = 0; Idx < dataGrid1.Columns.Count; Idx++)
    {
        // Puts Column Header into excel work sheet
        ws.Range["A1"].Offset[0, Idx].Value = dataGrid1.Columns[Idx].Header;
    }

    for (int Idx = 0; Idx < dataGrid1.Items.Count; Idx++)
    {  
        ws.Range["A2"].Offset[Idx].Resize[1, dataGrid1.Columns.Count].Value =
        dataGrid1.Items[Idx].ToString();
    }

    excel.Visible = true;
    wb.
}
catch (COMException ex)
{
    MessageBox.Show("Error accessing Excel: " + ex.ToString());
}
catch (Exception ex)
{
    MessageBox.Show("Error: " + ex.ToString());
}
4

2 回答 2

1

如果有人遇到同样的问题,我找到了解决方案。

要访问行内的值,您需要执行以下操作:

for (int columnIndex = 0; columnIndex < dataGrid1.Columns.Count; columnIndex++) 
{
    ws.Range["A2"].Offset[rowIndex, columnIndex].Value =
        (dataGrid1.Items[rowIndex] as DataRowView).Row.ItemArray[columnIndex].ToString()
}
于 2012-08-30T12:49:17.707 回答
0

通过循环for (int Idx = 0; Idx < dataGrid1.Items.Count; Idx++),您可以遍历项目,即 DataGrid 的行。每个这样的项目或行显然是一个DataRowView,因此 ToString 为您提供“System.Data.DataRowView”。

您还必须遍历一行中的每个项目,即单元格:

for (int rowIndex = 0; rowIndex < dataGrid1.Items.Count; rowIndex++) 
{
    for (int columnIndex = 0; columnIndex < dataGrid1.Columns.Count; columnIndex++) 
    {
        ws.Range["A2"].Offset[rowIndex, columnIndex].Value =
            dataGrid1.Items[rowIndex][columnIndex].ToString();
    }
} 

请注意,我没有对此进行测试,并且对 Excel API 一无所知,所以我不确定ws.Range["A2"].Offset[rowIndex, columnIndex]事情是否正确。

于 2012-08-30T09:25:18.240 回答