0

我正在尝试使用以下代码在可下载的 .csv 文件中显示数据流:

WebClient wc = new WebClient();
                    byte[] csvBytes = wc.DownloadData(url);
                    return File(csvBytes, "text/csv", "Test.csv");

URL 以这种格式返回数据:

“保罗”、“史密斯”、“A & P CONSTRUCTION”、“211 N JACKSON ST”、“纽约”、“NY”、“98055”、“杰罗姆”、“哈尔西”、“AAA 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\"...

我应该如何修改上面的代码,以便获得正确格式的值(没有“\”并且在右列下)?

4

2 回答 2

1

原因是您在使用WebClient. 似乎服务器在为您构建 CSV 时会查看 HTTP 标头。

因此,您需要尽可能多地模拟您的浏览器(只要您在浏览器中获得正确的 CSV),以使 CSV 服务器认为您是浏览器。为此,您需要查看浏览器在访问 CSV URL 时发送的 HTTP 标头(您可以使用 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”等标题)。

于 2012-11-06T22:56:23.920 回答
0

尝试将 Mime 类型更改为“application/csv”。

CSV 的 Mime 类型也有:text/comma-separated-values、text/csv、application/csv、application/excel、application/vnd.ms-excel、application/vnd.msexcel、text/anytext

于 2012-11-06T22:00:31.487 回答