我正在尝试使用以下代码在可下载的.csv文件中显示数据流:
WebClient wc = new WebClient();
byte[] csvBytes = wc.DownloadData(url);
return File(csvBytes, "text/csv", "Test.csv");
网址以这种格式返回数据:
“PAUL”,“SMITH”,“A& P CONSTRUCTION”,“211 N JACKSON ST”,“纽约”,“纽约”,“98055” “JEROME”,“HALSEY”,“A A A A LOCATING INC”,“1906 SOUTHVIEW DR”,“PAPILLION”,“NE”,“68046” “MIKE”,“GIBILISCO”,“ABSOLUTE SECURITY INC”,“944 S JEFFERSON ST”,“PAPILLION”,“NE”,“84102”
上面的效果很好,我得到了一个可下载的链接...但是当我打开.csv文件时 - 我只记录了一行记录:
\"PAUL\" \"SMITH\" \"A & P CONSTRUCTION\" \"211 N JACKSON ST\" \"PAPILLION\" \"NE\" \"68046\"...
我应该如何修改上面的代码,以便以正确的格式获取值(不使用“\”和右列)?
答案 0 :(得分:1)
原因是您在使用WebClient
时获得了不同的数据。看起来服务器在为您构建CSV时会查看HTTP标头。
因此,您需要尽可能多地模拟您的浏览器(只要您在浏览器中获得正确的CSV),以使CSV服务器认为您是浏览器。要做到这一点,您需要查看HTTP标头,当您访问CSV URL时,浏览器会发送该标头(您可以使用Fiddler或浏览器内置的任何开发工具)。而你需要像这样结束smth:
wc.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
wc.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
wc.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
逐个添加标题,只需确保与浏览器发送的标题完全相同(并忽略“cookie”,“host”等标题)。
答案 1 :(得分:0)
尝试将Mime类型更改为“application / csv”。
CSV的Mime类型还包括:text /逗号分隔值,text / csv,application / csv,application / excel,application / vnd.ms-excel,application / vnd.msexcel,text / anytext