65.9K
CodeProject 正在变化。 阅读更多。
Home

将 .NET DataSet 导出到 Excel 工作簿

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.33/5 (2投票s)

2009年2月12日

CPOL
viewsIcon

26244

如何将 .NET DataSet 导出到 Excel 工作簿。

引言

本文中解释的代码将 DataSet 导出到 Excel 工作簿,DataSet 中的每个 DataTable 对应一个工作表。

背景

没有特别的限制,只是将 DataSet 导出到 Excel 表格的一种简洁方便的方法。我发现这在尝试调试/调查数据错误时很有帮助。

使用代码

这就是它的全部,精彩呈现。generateIdentity 布尔值用于强制/插入一个 IDENTITY 字段覆盖在第一列的顶部,因此您必须确保在表中定义了 IDENTITY 列,但未填充数据 - 但是,通过对代码进行少量修改,很容易 INSERT 此列。请注意,您需要在项目中引用 Microsoft Excel 11.0 对象库

using Office = Microsoft.Office.Core;
using Excel;

[...]

private static void DataSetToExcel(DataSet ds, Boolean generateIdentity)
{
    Excel.Application xlApp = new Excel.Application();
    xlApp.Visible = false;
    Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
    for (int k = 0; k < ds.Tables.Count; k++)
    {
        System.Data.DataTable dt = ds.Tables[k];
        Worksheet ws = (Worksheet) wb.Worksheets.Add(Missing.Value, 
                        Missing.Value, Missing.Value, Missing.Value);
        ws.Name = dt.TableName;

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                if (i == 0)
                    ws.Cells[1, j + 1] = dt.Columns[j].ColumnName;

                ws.Cells[i + 2, j + 1] = (j == 0 && generateIdentity) ? 
                                         (i + 1).ToString() : dt.Rows[i][j].ToString();
            }
        }
    }
    xlApp.Visible = true;
}

历史

  • 版本 0.1 - 初次发布,欢迎评论!特别是如果您不喜欢将工作表添加到工作簿的从后到前的顺序;任何建议都将虚心接受并表示感谢。
© . All rights reserved.