【发布时间】:2013-09-20 07:24:35
【问题描述】:
我正在尝试将.csv 文件从 Web 服务写入 ftp。当我在 Web 服务完成编写后下载文件时,Excel 在不同版本的 Excel 中反应不同。 2013 完全可以正常打开文件,并且完全按照我想要的方式工作。但是 2003 有以下错误,当我打开文件时,所有内容都在 A 列中,而不是分布在 b、c、d 等列中,逗号没有分隔。
这里是c# web服务的代码
string delimiter = ",";
int length = filecontents.Count;
StringBuilder sb = new StringBuilder();
for (int index = 0; index < length; index++)
sb.AppendLine(string.Join(delimiter, filecontents[index]));
string fileName = name;
string ftpAddress = "myaddress";
string username = "myusername";
string password = "mypassword";
string str = sb.ToString();
byte[] buffer = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, buffer, 0, buffer.Length);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + ftpAddress + fileName);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(username, password);
Stream reqStream = request.GetRequestStream();
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Close();
我尝试将request.ContentType 设置为application/CSV 和text/CSV 都返回错误
"System.NotSupportedException: 此属性不受此支持 班级。 ↵ 在 System.Net.FtpWebRequest.set_ContentType(String value)"
任何想法将不胜感激
编辑:当使用\t 作为分隔符(制表符)时,旧版本的 Excel 会按照我的意愿执行。但是,较新的版本则不会。所以我猜不同版本的 Excel 有不同的默认分隔符,关于如何强制它默认为逗号的任何想法?
【问题讨论】:
-
也许您不应该只在 Excel 中使用
opencsv-file,而应该使用import(您可以在其中选择分隔符等)? -
如果是我每次都打开文件我会的。但该文件正在为最终用户创建,然后下载到他们拥有的任何机器上,无论是顶级规格还是 10 年以上的东西
-
为用户提供指令,为他们编写excel vba宏或使用其他方式。我有一个带有原始手工 csv-export 的软件(它甚至没有将字符串放入
"",所有数字都保存在中性文化中),但我对任何客户都没有问题,因为他们被指示不要使用;在文本中和导入期间必须用他们想要使用的任何小数点符号替换.。
标签: c# csv format export-to-csv