首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据网格导出到Excel文档

问将数据网格导出到Excel文档
EN

Stack Overflow用户
提问于 2012-08-30 16:45:00
回答 2查看 2.8K关注 0票数 2

我需要将数据网格导出到excel文档,但在执行此操作时遇到错误。下面是我用来导出的代码,它打开了Excel文档,标题已经就位,但是每个单元格中的值应该在哪里,我在excel单元格中看到了System.Data.DataRowView。我需要做的是将行中的值插入到Excel工作簿中。

感谢任何帮助,或教程链接。

彼得

代码语言:javascript
复制
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());
}
EN

回答 2

Stack Overflow用户

发布于 2012-08-30 20:49:18

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

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

代码语言:javascript
复制
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()
}
票数 1
EN

Stack Overflow用户

发布于 2012-08-30 17:25:18

使用循环for (int Idx = 0; Idx < dataGrid1.Items.Count; Idx++),您将遍历项目,即DataGrid的行。这样的每一项或每一行显然都是一个DataRowView,因此ToString会给出"System.Data.DataRowView“。

您还必须迭代一行中的每一项,即单元格:

代码语言:javascript
复制
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]这件事是否正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12193077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档