Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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#Web应用程序正确导出到Excel?(Â;£;代替£;)_C#_.net_Excel_Character - Fatal编程技术网

如何将英镑符号从C#Web应用程序正确导出到Excel?(Â;£;代替£;)

如何将英镑符号从C#Web应用程序正确导出到Excel?(Â;£;代替£;),c#,.net,excel,character,C#,.net,Excel,Character,我们正在将一些数据从网站应用程序导出到Excel电子表格中,然而,当使用GBP符号时,不会输出“9.99英镑”,而是产生“9.99英镑” 下面是一位同事编写的用于生成电子表格的代码[tableOut是一个包含HTML表格的StringBuilder]: string filename = "EngageReplies.xls"; Response.Clear(); Response.Buffer = true; Response.ContentType = "application/vnd.ms

我们正在将一些数据从网站应用程序导出到Excel电子表格中,然而,当使用GBP符号时,不会输出“9.99英镑”,而是产生“9.99英镑”

下面是一位同事编写的用于生成电子表格的代码[tableOut是一个包含HTML表格的StringBuilder]:

string filename = "EngageReplies.xls";
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader( "content-disposition", "attachment;filename=" + filename );
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.EnableViewState = false;

Response.Write( tableOut );
Response.End();
你知道我们怎样才能得到想要的产出吗

p、 美国。不确定我是否应该将此问题分离为一个单独的问题,但当生成电子表格时,会触发一条警告消息:

您试图打开的文件, “engagerplies.xls”位于不同的位置 格式超出了文件指定的格式 分机。请确认该文件未被删除 已损坏并且来自受信任的源 在打开文件之前。你想要什么 现在打开文件吗


我用Firefox和IE打开了Office 2007的文件。单击“是”可以打开该文件,但如果我的用户不受该文件的约束,我会更喜欢它。

在传输二进制文件(如XLS文件)时,我不希望看到字符集/内容编码头。我还将测试输出,将其保存到某个地方的lcoal磁盘,并验证文件创建是否“正确”。警告是因为您正在使用XLS扩展名的文件中保存HTML数据而不是Excel电子表格数据。您可以尝试将文件扩展名更改为“.htm”,但我不确定如何在Excel而不是web浏览器中打开该文件

你很可能想看看这个问题,了解更多的信息。

啊哈

首先,我尝试删除字符集和CharacterEncoding,但仍然得到了错误的输出,因此,我将它们设置为以下值,并且工作正常:

Response.Charset = "";
Response.ContentEncoding = System.Text.Encoding.Default;

感谢罗兰的灵感

我同意Martin Brown的观点,这是一个HTML表格而不是excel电子表格,这就是为什么您会收到这样的信息。然而,我可以理解为什么开发人员将其保存为.xls,这意味着最终用户可以通过Excel打开表(处理带有警告的html转换),而不是在他们的web浏览器中打开html。我想这会让用户体验更好一些

另一种方法是使用office interop(需要安装在服务器上并进行大量配置)正确创建表,或者查找可以正确创建excel文件的库

Response.ContentEncoding = System.Text.Encoding.Unicode; /*c# uses UTF-16 internally*/  
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble()); /*Include the UTF-16 header so excel will treat this as UTF-16*/
试试这段代码,它可以很好地解决这个问题