如何将英镑符号从C#Web应用程序正确导出到Excel?(Â;£;代替£;)
我们正在将一些数据从网站应用程序导出到Excel电子表格中,然而,当使用GBP符号时,不会输出“9.99英镑”,而是产生“9.99英镑” 下面是一位同事编写的用于生成电子表格的代码[tableOut是一个包含HTML表格的StringBuilder]:如何将英镑符号从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
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*/
试试这段代码,它可以很好地解决这个问题