找回密码
 立即注册

QQ登录

只需一步,快速开始

sygmonitor

论坛元老

16

主题

60

帖子

1万

积分

论坛元老

积分
12550

活字格认证微信认证勋章

sygmonitor
论坛元老   /  发表于:2013-7-24 15:31  /   查看:11358  /  回复:10
silverlight 下flexgrid导出CSV文件中汉字是乱码,如何处理啊?还有就是如何连表头一起导出

10 个回复

倒序浏览
gw0506
超级版主   /  发表于:2013-7-24 17:57:00
沙发
我这边没有重现乱码问题。请你将出错的demo贴到论坛上。


表头导出使用SaveOption.SaveHeaders参数。
  1. this.c1FlexGrid.Save("temp.csv", FileFormat.Csv, SaveOptions.SaveHeaders);
复制代码
回复 使用道具 举报
sygmonitor
论坛元老   /  发表于:2013-7-25 09:29:00
板凳
回复 2楼gw0506的帖子
  1. <c1:C1FlexGrid x:Name="dgList" Grid.Row="1" AutoGenerateColumns="False" SelectionMode="Row">
  2.                                 <c1:C1FlexGrid.Columns>
  3.                                     <c1:Column Header="交易流水号"                Width="120" Binding = "{Binding AAE072}" />
  4.                                     <c1:Column Header="就诊医院编号"                Width="100" Binding = "{Binding AKB020}" />
  5.                                     <c1:Column Header="定点单位编号"                Width="100" Binding = "{Binding AKB026}" />
  6.                                     <c1:Column Header="定点单位名称"                Width="100" Binding = "{Binding AKB027}" />
  7.                                </c1:C1FlexGrid.Columns>
  8.            </c1:C1FlexGrid>
复制代码
  1. //导出文件
  2.         void btnExport_Click(object sender, RoutedEventArgs e)
  3.         {
  4.             var dlg = new SaveFileDialog();
  5.             dlg.DefaultExt = "csv";
  6.             dlg.Filter =
  7.                 "Comma Separated Values (*.csv)|*.csv|" +
  8.                 "Text File (*.txt)|*.txt";
  9.             if (dlg.ShowDialog().Value)
  10.             {
  11.                 using (var s = dlg.OpenFile())
  12.                 {
  13.                     // dlg.FilterIndex is not working properly (SL bug) so we check
  14.                     // the file extension to chose the proper save format.
  15.                     var ext = System.IO.Path.GetExtension(dlg.SafeFileName).ToLower();
  16.                     switch (ext)
  17.                     {
  18.                         case ".csv":
  19.                             dgList.Save(s, FileFormat.Csv, SaveOptions.SaveColumnHeaders);
  20.                             break;
  21.                         case ".txt":
  22.                             dgList.Save(s, FileFormat.Text, SaveOptions.Formatted);
  23.                             break;
  24.                         default:
  25.                             dgList.Save(s, FileFormat.Csv, SaveOptions.Formatted);
  26.                             break;
  27.                     }
  28.                 }
  29.             }
  30.         }
复制代码


这个是我的导出文件的代码,导出文件乱码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-7-25 11:03:00
地板
csv文件通过Notepad打开正常,通过Excel打开确实是乱码。
我查了一下,保存为csv的字符集是Unicode(UTF-8)。中文版Excel似乎只认识GB2312,无法识别UTF-8字符集。

你的需求是必须要通过Excel打开呢还是通过其他文件打开也可以?
回复 使用道具 举报
sygmonitor
论坛元老   /  发表于:2013-7-25 11:21:00
5#
回复 4楼gw0506的帖子

我的需求是必须用Excel打开,本来是要导出Excel的,因为FlexGrid没有直接导出EXCEL,所以才导出CSV
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-7-25 15:17:00
6#
这个从产品角度,我会反馈到研发团队。
从你的需求角度,目前来说,可行的一个办法就是,你在代码中保存完文件后。再做一步操作,将保存的文件用UTF-8打开,用GB2312再存一遍。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-7-26 11:50:00
7#
研发团队正在处理此问题,有进一步信息立刻反馈给你。预计下周有进展。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-3 15:14:00
8#
你好,这个问题目前的情况是这样的,是否显示乱码除了跟操作系统默认CodePage有关,跟系统上使用的Excel的CodePage也有关。也就是说,中文版、英文版操作系统和Excel都不同,互相组合后也不一样。所以我们正在考虑加接口。这涉及比较多的问题,所以应该还需要一段时间。目前没有具体时间表,但是这个问题我们肯定要解决。

有进一步信息我会继续反馈给你。
回复 使用道具 举报
sygmonitor
论坛元老   /  发表于:2013-9-11 11:20:00
9#
回复 8楼gw0506的帖子

好的,谢谢。希望得到更好的答复!
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-11 18:07:00
10#
已经确定加接口,顺利的话,近几周内就有新的小版本发布。发布后我给你下载链接。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部