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(); } 

Более простым решением, чем тот, на который вы ссылаетесь, является использование типа «ТЕКСТ» вместо URL. TEXT поддерживает все импорт CSV, в том числе из HTTP-источников. URL-адрес, как представляется, предназначен для обработки скрипов экрана больше, чем что-либо еще.

например, в вашем случае:

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

становится

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

И для тех, кто наткнулся на эту должность, задав тот же вопрос, но с помощью скриптов VB в Excel, полное решение будет выглядеть так:

 ' 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 
  • Откройте файл excel в новом окне (т. Е. Не существующий экземпляр Excel)
  • Чтение данных Excel с запятыми и возврат каретки
  • C # Winforms save to excel с форматированием
  • Эмуляция Excel Числовая точность C # .NET
  • C # Чтение файла Excel по столбцу Индекс
  • Как читать дефисные почтовые индексы с использованием oledb
  • Создание документа XML Excel с использованием XDocument
  • Добавить три столбца в Excel
  • Сохранение книги Excel C #
  • необработанное исключение типа «System.InvalidCastException»
  • SqlBulkCopy с отображением столбцов за пределами исключения Bounds в C #
  • Давайте будем гением компьютера.