Excel QueryTables.Add从URL逗号分隔

我有一个服务器,在http响应中返回大量逗号分隔的数据。 我需要将这些数据导入到excel中。

我有这个工作,通过传递内容到临时文件,然后读取临时文件作为CSV,但这个过程似乎效率低下。 查询表可以直接从http响应中读取,但它将每行数据放入一个单元中,而不是每个逗号分隔成一个单元。

是否有可能从一个http响应中直接读取逗号分隔的数据到excel从C#excel加载项?

谢谢!

public static void URLtoCSV(string URL, Excel.Worksheet destinationSheet, Excel.Range destinationRange, int[] columnDataTypes, bool autoFitColumns) { destinationSheet.QueryTables.Add( "URL;" + URL, destinationRange, Type.Missing); destinationSheet.QueryTables[1].Name = URL; destinationSheet.QueryTables[1].FieldNames = true; destinationSheet.QueryTables[1].RowNumbers = false; destinationSheet.QueryTables[1].FillAdjacentFormulas = false; destinationSheet.QueryTables[1].PreserveFormatting = true; destinationSheet.QueryTables[1].RefreshOnFileOpen = false; destinationSheet.QueryTables[1].RefreshStyle = XlCellInsertionMode.xlInsertDeleteCells; destinationSheet.QueryTables[1].SavePassword = false; destinationSheet.QueryTables[1].SaveData = true; destinationSheet.QueryTables[1].AdjustColumnWidth = true; destinationSheet.QueryTables[1].RefreshPeriod = 0; destinationSheet.QueryTables[1].Refresh(false); if (autoFitColumns == true) destinationSheet.QueryTables[1].Destination.EntireColumn.AutoFit(); } 

比您引用的更简单的解决scheme是使用“TEXT”而不是URL的types。 TEXT支持所有CSV导入,包括HTTP来源。 URL似乎被devise来处理屏幕抓取比其他任何事情更多。

例如在你的情况下:

 destinationSheet.QueryTables.Add("URL;" + URL, 

 destinationSheet.QueryTables.Add("TEXT;" + URL, 

对于那些在Excel中遇到这个问题的人,他们问的是同样的问题,但是使用VB脚本,完整的解决scheme将如下所示:

 ' Load new data from web With ActiveSheet.QueryTables.Add(Connection:="TEXT;http://yourdomain.com/csv.php", Destination:=Range("$A$1")) .TextFileCommaDelimiter = True .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlOverwriteCells .SavePassword = False .SaveData = False .AdjustColumnWidth = True .Refresh BackgroundQuery:=False End With