数据导出问题

yafei1188 2016-11-18 02:35:15
从数据库里边导出文件,因为WINCE不支持xls格式,所以就考虑用csv格式,只是简单一些数据,拷到电脑上也是用excel打开,但现在的问题是,如果直接这样写

CString str;
CString strdata(_T("123"))
file.Write(strdata,wcslen(strdata)*sizeof(wchar_t));
str = _T("\r\n"); //换行
str = _T(","); //逗号分列
file.Write(str,str.GetLength());

导出的数据用excel打开,可以正常显示,但是不支持中文。
如果我把格式转换成unicode,

WORD unicode = 0xFEFF;
file.Write(&unicode,2);

导出的数据支持中文了,但是整个数据只占一列,如图
求教大神们,怎么样又显示中文又能用逗号来分隔每一列的数据啊!
...全文
1484 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
为什么我发的帖我没有权限结帖,这网站也太扯淡了...
yafei1188 2016-11-21
  • 打赏
  • 举报
回复
引用 4 楼 accessysq 的回复:
你没写好吧,我记得用过没问题。搞清楚格式,按着格式输出。 或者你将中文转换一下格式也行,不一定要用Unicode。
你是怎么转化格式的?请教!
yafei1188 2016-11-21
  • 打赏
  • 举报
回复
引用 3 楼 91program 的回复:
CSV 的格式偶不清楚,LZ 你按格式要求去写应该是没有问题的。一定要注意格式! 由于 WinCE 的字符串默认是 Unicode,所以 Unicode 的文件头写入文件是必须的。
那个地方是我写帖子的时候写错了,应该是两个变量,一个str1一个是str2。然后分别被file.Write写入。但是默认是不支持中文的,我加上WORD unicode = 0xFEFF;file.Write(&unicode,2);这两句后,显示中文,但是作为分列符的逗号,却不能分列,所有的内容都显示到第一列,帖子的图所示。
yafei1188 2016-11-21
  • 打赏
  • 举报
回复
引用 1 楼 bigwatercar 的回复:
1. CSV的全称是叫Comma Separated Value 2. CSV的MIME类型是text/csv 3 CSV文件中的每一行数据,作为一行记录,也就是一个条目(99%的情况,排除有些换行数据,下面会提到) 4. CSV文件的每一行数据后面跟着(回车+换行符)即CRLF,但有些资料中也提到了单个CR或者LF均可,但标准rfc文档中用到的是CR+LF 5. 文件第一行可以是标题行,这个用到的不多 6. 每行数据中,每个字段之间均必须用半角逗号comma进行分隔,这也是为什么叫Comma Separated的来由,如果有标题行,那么标题之间也使用逗号分隔 7 每行的最后一个字段后应该只有CRLF,不应该再有逗号 8. 最后一行后面可以不加CRLF 9. 在逗号分隔开的每个字段中,前面的空白和后面的空白会被忽略,但单个字段内部的空白会被保留,例如, aaa, bbb bbb ,ccc 我们看到有三个字段,其中第二个字段前面,中间,后面均有空白,但CSV解析器应该只保留中间的空白,即bbb bbb,类似于java中的trim方法 10. 如果某个字段中间有回车换行之类的字符,可以用双引号来引用 11. 字段本身推荐使用双引号来引用,但MS的excel默认是不会对字段加" "的 12. 转义字符逗号(,),当字段中存在逗号是,是必须要将这个字段用""引用起来的 13. 转移字符双引号("),当字段中存在双引号时,必须连续用两个双引号来进行转义 楼主你检查一下你的“逗号”对不对。
逗号正确,如果不加 WORD unicode = 0xFEFF; file.Write(&unicode,2); 这两句代码,分行和分列都是没问题的(逗号分列,\r\n分行),逗号不会显示,但就是中文是乱码。如果加上 WORD unicode = 0xFEFF; file.Write(&unicode,2); 这两句,中文显示了,但是,逗号不能分列了,所有内容都会显示到第一列,逗号也会显示。
  • 打赏
  • 举报
回复
你没写好吧,我记得用过没问题。搞清楚格式,按着格式输出。 或者你将中文转换一下格式也行,不一定要用Unicode。
  • 打赏
  • 举报
回复
刚试了一下,excel将文件保存成csv采用的是ansi编码。 你导出的时候也转成ansi好了
91program 2016-11-18
  • 打赏
  • 举报
回复
CSV 的格式偶不清楚,LZ 你按格式要求去写应该是没有问题的。一定要注意格式! 由于 WinCE 的字符串默认是 Unicode,所以 Unicode 的文件头写入文件是必须的。
91program 2016-11-18
  • 打赏
  • 举报
回复
str = _T("\r\n"); //换行 被 str = _T(","); //逗号分列 覆盖了,没有写入文件。
  • 打赏
  • 举报
回复
1. CSV的全称是叫Comma Separated Value 2. CSV的MIME类型是text/csv 3 CSV文件中的每一行数据,作为一行记录,也就是一个条目(99%的情况,排除有些换行数据,下面会提到) 4. CSV文件的每一行数据后面跟着(回车+换行符)即CRLF,但有些资料中也提到了单个CR或者LF均可,但标准rfc文档中用到的是CR+LF 5. 文件第一行可以是标题行,这个用到的不多 6. 每行数据中,每个字段之间均必须用半角逗号comma进行分隔,这也是为什么叫Comma Separated的来由,如果有标题行,那么标题之间也使用逗号分隔 7 每行的最后一个字段后应该只有CRLF,不应该再有逗号 8. 最后一行后面可以不加CRLF 9. 在逗号分隔开的每个字段中,前面的空白和后面的空白会被忽略,但单个字段内部的空白会被保留,例如, aaa, bbb bbb ,ccc 我们看到有三个字段,其中第二个字段前面,中间,后面均有空白,但CSV解析器应该只保留中间的空白,即bbb bbb,类似于java中的trim方法 10. 如果某个字段中间有回车换行之类的字符,可以用双引号来引用 11. 字段本身推荐使用双引号来引用,但MS的excel默认是不会对字段加" "的 12. 转义字符逗号(,),当字段中存在逗号是,是必须要将这个字段用""引用起来的 13. 转移字符双引号("),当字段中存在双引号时,必须连续用两个双引号来进行转义 楼主你检查一下你的“逗号”对不对。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧