Как называется вкладка при загрузке XLS-файла в vb 2008?

StackOverflow https://stackoverflow.com/questions/1002568

  •  05-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь загрузить электронную таблицу Excel 97 с одной вкладкой в таблицу SQL server, используя функцию OleDbDataAdapter.Из всей документации, которую я нашел, первым параметром должен быть "select * from [sheet1$]".У меня это работает нормально, только если вкладка на рабочем листе называется Sheet1.Если я изменю то, что находится в скобках [], на фактическое название вкладки, это также будет работать нормально.

Проблема в том, что загружаемая электронная таблица поступает из другой системы, и эта система меняет название вкладки при каждой загрузке.Как я могу выяснить, как называется вкладка, чтобы моим пользователям не приходилось открывать электронную таблицу и переименовывать вкладку?

Это было полезно?

Решение

Хорошо, сначала откройте OleDB-подключение к вашей электронной таблице Excel.

Затем используйте что-то вроде следующего (показано в VB.NET):

Imports System.Data
Imports System.Data.Odbc
Imports System.Data.OleDb

Dim DSN As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MYEXCELFILE.XLS;Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;MAXSCANROWS=12"""
Dim OleDbConn As New OleDbConnection(DSN)
OleDbConn.Open()
Dim tables As System.Data.DataTable = OleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
Dim tableName As String
Dim canBeImported As Boolean
For Each dr As System.Data.DataRow In tables.rows
    tableName = dr.Item("TABLE_NAME").ToString
    canBeImported = (tableName.IndexOfAny(New Char() {" ","[","]","'","""","`",";"}) < 0)
Next
OleDbConn.Close()

Это позволит перебрать все таблицы в файле Excel (таблица = листы или именованные диапазоны) и получить имя каждой.Кроме того, он будет отфильтровывать любые таблицы, в которых есть символы, к которым невозможно получить доступ через ODBC (пробелы - наиболее распространенная проблема).

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top