Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Excel文件采用文件扩展名指定的其他格式(从gridview导出的Excel)_C#_Asp.net_Excel_Export To Excel - Fatal编程技术网

C# Excel文件采用文件扩展名指定的其他格式(从gridview导出的Excel)

C# Excel文件采用文件扩展名指定的其他格式(从gridview导出的Excel),c#,asp.net,excel,export-to-excel,C#,Asp.net,Excel,Export To Excel,我正在将一个gridview导出到一个excel文件,它可以很好地打开。唯一的问题是,每次打开excel文件时都会弹出此警告: 您试图打开的文件的格式与文件扩展名指定的格式不同。打开文件之前,请确认文件未损坏且来源可靠。是否立即打开该文件? 我正在使用的代码: HttpContext.Current.Response.Clear(); HttpContext.Current.Response.AddHeader("content-disposition", str

我正在将一个gridview导出到一个excel文件,它可以很好地打开。唯一的问题是,每次打开excel文件时都会弹出此警告:

您试图打开的文件<>的格式与文件扩展名指定的格式不同。打开文件之前,请确认文件未损坏且来源可靠。是否立即打开该文件?

我正在使用的代码:

        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Single_Raw.xls"));
        HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";

    using (StringWriter sw = new StringWriter())
    {
        using (HtmlTextWriter htw = new HtmlTextWriter(sw))
        {
           // some code

            HttpContext.Current.Response.Write(sw.ToString());
            HttpContext.Current.Response.End();
        }
    }

这是因为Excel知道这不是一个实际的Excel文件,即使您用.xls扩展名命名它。过去,为了避免此警告,我使用了Microsoft.Office.Interop.Excel引用来生成输出文件。完成后,您将拥有一个合法的Excel文件


编辑:我在谷歌搜索了一下,从微软那里找到了,但它要求你破解客户端计算机的注册表(可能不可行)。

还有一个类似的问题。。。嗯,这是对的。该文件的格式不同。即使将excel工作表另存为HTML,然后立即重新打开,也会发生这种情况。我认为这是你无法避免的(这当然是一个选项。我相信它要求在服务器上安装office,但这并不总是一个选项/好主意。有第三方工具也允许您生成Excel文件,但它们可能不是免费的(尽管office通常也不能免费安装在服务器上)@chris但是如果客户端的笔记本电脑上安装了office呢?这样行吗?因为不管怎样,整个excel上传过程都发生在客户端的笔记本电脑和服务器之间。