将DataTable导出到工作簿

时间:2013-03-15 06:10:11

标签: excel export

我已经导出了我的数据表,如下面的代码所示。它在导出大数据时工作正常,但是当我尝试打开xls文件时,它会提示我这个错误:

“Excel在filename.xls中找到了不可读的内容。是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击是。”

DataTable exportTable = Record.GetAll();
        Workbook workbook = new Workbook();
        Worksheet sheet = new Worksheet("Test");

        for (int x = 0; x < exportTable.Columns.Count; x++)
        {
            sheet.Cells[0, x] = new Cell(exportTable.Columns[x].ColumnName.ToString());
        }

        for (int i = 0; i < exportTable.Rows.Count; i++)
        {
            for (int j = 0; j < exportTable.Columns.Count; j++)
            {
                sheet.Cells[(i + 1), j] = new Cell(exportTable.Rows[i][j].ToString());
            }
        }

        workbook.Worksheets.Add(sheet);

        workbook.Save(@"C:\temp1\Test.xls");

        System.IO.FileInfo file = new System.IO.FileInfo(@"C:\temp1\Test.xls");
        Response.ClearContent();
        Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
        Response.AddHeader("Content-Length", file.Length.ToString());
        Response.ContentEncoding = System.Text.Encoding.UTF8;
        Response.ContentType = "application/ms-excel";
        Response.TransmitFile(file.FullName);
        Response.End();

1 个答案:

答案 0 :(得分:0)

如果您使用的是Excel 2010或更高版本(我不确定2007),即使您将扩展名设置为XLS,该文件也将保存为XLSX。将扩展名更改为XLSX,它应该没问题。否则Excel将检测扩展名和文件结构之间的差异,并将显示上面的消息。