Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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
您尝试打开的文件的格式与尝试在excel中打开文件时文件扩展名c#错误指定的格式不同_C#_Asp.net - Fatal编程技术网

您尝试打开的文件的格式与尝试在excel中打开文件时文件扩展名c#错误指定的格式不同

您尝试打开的文件的格式与尝试在excel中打开文件时文件扩展名c#错误指定的格式不同,c#,asp.net,C#,Asp.net,您尝试打开的文件的格式与尝试在excel中打开文件时文件扩展名c#错误指定的格式不同 这是我的密码: private void Export2Excel(GridView GridView1, GridView GridView2) { Response.AddHeader("content-disposition", "attachment;filename= " + filename + ".xls"); Response.Charset = ""; Response.ContentTy

您尝试打开的文件的格式与尝试在excel中打开文件时文件扩展名c#错误指定的格式不同

这是我的密码:

private void Export2Excel(GridView GridView1, GridView GridView2)

{

Response.AddHeader("content-disposition",
"attachment;filename= " + filename + ".xls");
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; //"application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);

PrepareForExportExcel(GridView1, GridView2);


string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());


Response.OutputStream.Flush();
Response.OutputStream.Close();

}
catch (Exception ex)
{
lblError.Text = ex.Message;
}

}
private void Export2Excel(GridView GridView1、GridView GridView2)
{
Response.AddHeader(“内容处置”,
“附件;文件名=“+filename+”.xls”);
响应。Charset=“”;
Response.ContentType=“application/vnd.openxmlformats officedocument.spreadsheetml.sheet”;/“application/vnd.ms excel”;
StringWriter sw=新的StringWriter();
HtmlTextWriter hw=新的HtmlTextWriter(sw);
PrepareForExportExcel(GridView1、GridView2);
字符串样式=@“.textmode{mso数字格式:\@;}”;
回应。写作(风格);
Response.Output.Write(sw.ToString());
Response.OutputStream.Flush();
Response.OutputStream.Close();
}
捕获(例外情况除外)
{
lblError.Text=ex.消息;
}
}
这是Excel的“问题”,而不是C。Excel可以打开HTML文档,但如果基础格式与文件扩展名不同,它会发出警告

解决此问题的最佳方法是使用excel库生成除HTML之外的“真实”excel文档,并使用正确的文件扩展名(
XLS
用于二进制excel文件,而
XSLX
用于“XML”excel文件)

这是excel的“问题”,而不是C。Excel可以打开HTML文档,但如果基础格式与文件扩展名不同,它会发出警告


解决此问题的最佳方法是使用excel库生成除HTML之外的“真实”excel文档,并使用正确的文件扩展名(
XLS
用于二进制excel文件,而
XSLX
用于“XML”excel文件)

请看,它可能会帮助您导出“正确”的excel文件。这到底有什么奇怪的?您正在编写的文件不是Excel文件,它只是一堆HTML。当然,Excel可以解析它,但它会警告您,您没有打开真正的Excel文件。这是警告,不是错误。您需要编写一个具有正确扩展名(xlsx)的真正的OpenXML文件来避免此警告。请参阅,它可能会帮助您导出“正确”的Excel文件。这到底有什么奇怪之处?您正在编写的文件不是Excel文件,它只是一堆HTML。当然,Excel可以解析它,但它会警告您,您没有打开真正的Excel文件。这是警告,不是错误。您需要编写一个具有正确扩展名(xlsx)的真正的OpenXML文件来避免此警告。这并不完全正确。例如,如果您使用EPPlus,但仍然发送
Response.ContentType=“application/vnd.ms excel”而不是
应用程序/vnd.openxmlformats-officedocument.spreadsheetml‌​.工作表
您仍然会收到Excel错误。@VDWWD正确,因为EPPPlus以开放Xml格式写入,所以文件扩展名(在本例中为
XSLX
)必须与输出类型匹配。这就是“使用正确的扩展名”答案的要点。这并不完全正确。例如,如果您使用EPPlus,但仍然发送
Response.ContentType=“application/vnd.ms excel”而不是
应用程序/vnd.openxmlformats-officedocument.spreadsheetml‌​.工作表
您仍然会收到Excel错误。@VDWWD正确,因为EPPPlus以开放Xml格式写入,所以文件扩展名(在本例中为
XSLX
)必须与输出类型匹配。这就是“使用正确的分机”答案的要点。