0

我正在使用 Excel 2010 我有以下代码,我想将其导出到 xls 文件,但我收到以下消息:

您尝试打开的文件“Report.xls”的格式与文件扩展名指定的格式不同。在打开文件之前,请确认文件没有损坏并且来自受信任的来源。您现在要打开文件吗?

请注意,它仍处于打开状态,但不确定我收到消息的原因

           ....
            a.Fill(dtRecords);

            Response.ClearContent();
            Response.AddHeader("content-disposition", "attachment;filename=Report.xls");
            Response.ContentType = "application/ms-excel";
            string tab = string.Empty;

            foreach (DataColumn datacol in dtRecords.Columns)
            {
                Response.Write(tab + datacol.ColumnName);
                tab = "\t";
            }
            Response.Write("\n");

            foreach (DataRow dr in dtRecords.Rows)
            {
                tab = "";
                for (int j = 0; j < dtRecords.Columns.Count; j++)
                {
                    Response.Write(tab + Convert.ToString(dr[j]));
                    tab = "\t";
                }

                Response.Write("\n");
            }
            Response.End();
4

2 回答 2

1

我相信文件的官方 mime 类型.xlsapplication/vnd.ms-excel( source )

于 2013-05-23T19:04:26.217 回答
1

您收到此消息是因为您尝试将字符分隔值 (CSV) 流导出为 XLS 文件。

CSV 是文本格式,而 XLS 是复杂的二进制格式,具有比 CSV 更多的功能。

MS Excel 抱怨,因为它首先尝试将文件打开为 XLS,但它发现该文件实际上不是 XLS,因此它显示警告消息,但仍然足够聪明地确定该文件是 CSV 并采取相应措施。

尝试使用扩展名.csv和 content-type保存文件text/csv

于 2013-05-23T22:22:39.340 回答