Получить тип данных по умолчанию для колонки Excel, используя VSTO

Есть ли способ получить тип данных по умолчанию, назначенный excel, в его столбцы, используя VSTO c #.

Вы не можете протестировать тип данных всего столбца, потому что Excel не ограничивает типы данных всех ячеек в столбце одинаковыми. Вам нужно будет проверить тип данных, хранящийся в отдельных ячейках.

Пока ячейка не пуста, вы можете проверить тип данных, Object.GetType() в ячейке, вызвав метод Object.GetType() на значение, Object.GetType() в ячейке:

 // Using C# 4.0 Type type = worksheet.Cells[1,1].Value.GetType(); 

Использование C # 3.0 было бы немного более громоздким:

 // Using C# 3.0 Type type = (worksheet.Cells[1, 1] as Excel.Range).get_Value(Type.Missing).GetType(); 

Однако, если ячейка может быть пуста, вам придется протестировать ее, потому что Range.Value возвращаемый пустой ячейкой, является null , и вы не можете вызвать Object.GetType() на null . Поэтому вам нужно явно проверить значение null :

 // Testing Cell Data Type via C# 4.0 object value = worksheet.Cells[1,1].Value; string typeName; if (value == null) { typeName = "null"; } else { typeName = value.GetType().ToString(); } MessageBox.Show("The value held by the cell is a '" + typeName + "'"); 

При использовании C # 3.0 код аналогичен:

 // Testing Cell Data Type via C# 3.0 object value = (worksheet.Cells[1, 1] as Excel.Range).get_Value(Type.Missing); string typeName; if (value == null) { typeName = "null"; } else { typeName = value.GetType().ToString(); } MessageBox.Show("The value held by the cell is a '" + typeName + "'"); 

Надеюсь это поможет…

– Майк

Создайте ADO.NET DataTable, SqlConnection и SqlDataAdapter.
Заполните DataTable данными из листа Excel.
Затем введите базовый тип данных из datatable, используя свойство DataTable-> Columns [the column number] -> DataType .

Код ниже может помочь вам лучше понять. Однако это может быть не полным.

 DataTable dtSourceData = new DataTable(); //ADO.NET string Con_Str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + <Excel file path> + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";"; OleDbConnection con = new OleDbConnection(Con_Str);//ADO.NET con.Open(); String qry = "SELECT * FROM [Sheet1$]"; OleDbDataAdapter odp = new OleDbDataAdapter(qry, con);//ADO.NET odp.Fill(dtSourceData); con.Close(); 

Столбцы и строки в Excel не имеют типов данных. Ячейки имеют типы данных, которые зависят от их содержимого (Double, Error, String, Boolean, Empty). Перед тем, как ячейка имеет что-либо, что она вводит в нее, она пуста.

Чтобы получить тип данных всего столбца, вы можете использовать следующий код

 // Using C# 4.0 for (int i = 0; i <= cells.LastColIndex; i++) //looping all columns of row { Type type = worksheet.Cells[0,i].Format.FormatType; } 

Вышеприведенный код считывает тип данных всех столбцов в первой строке.

Но помните, что Excel не ограничивает типы данных всех ячеек в столбце одинаковыми .

  • Как найти именованный диапазон ячейки - VSTO
  • Microsoft Excel: программно создать скрытый именованный диапазон
  • VSTO C #: прочитайте текущее значение ячейки, которое всегда равно nul
  • Лучший способ программно заблокировать / отключить несколько элементов управления пользовательского интерфейса на панели ленты
  • Начальное значение 2D-массива, записанного на весь диапазон при записи данных в диапазон excel в c #
  • Программный доступ к выбранному в настоящий момент XML-карте в Excel
  • Как перебирать все ячейки в Excel VBA или VSTO 2005
  • C # VSTO - зависимые элементы трассировки на разных листах с NavigateArrow
  • Как выполнить событие .Onkey в надстройке Excel, созданной с помощью Visual Studio 2010?
  • Не удается запустить диалог «Хотите сохранить изменения» в Excel
  • Почему мой объект Workbook имеет значение null, когда я устанавливаю его в справочную книгу?
  • Interesting Posts

    Краткие сокращения Bloomberg в EXCEL

    Значение между или поиск в диапазоне и возвращаемое значение в excel

    Захват события щелчка мышью MS Office

    Использовать переменную для выбора элемента управления ActiveX по имени (в Word из Excel)?

    Экспорт данных из Sybase в Excel с использованием C #

    Манипулирование переменными с помощью excel

    Excel vba: создать макрос для подключения слайсера к нескольким сводным таблицам

    Использование Excel для хранения данных лучше или XML для автоматизации Тестирование

    Эксел круглый средний Если

    Excel находит ключевые слова в тексте

    Объединить книги и переименовать импортированный рабочий лист с помощью VBA в Excel

    Подключение к существующей книге вызывает ошибку в xlwings

    Извлечение определенных ячеек слова

    Чтение потока xls с помощью GetResponseStream и SpreadsheetDocument.Open

    Я пытаюсь написать сценарий, который будет извлекать почасовые значения из таблицы веб-страниц в excel

    Давайте будем гением компьютера.