2009-06-12 8 views

ответ

1

Alex - вот какой-то старый код, который я выкопал для запроса первенствовать. Здесь довольно базовый сценарий. Не обращайте внимания на плохую обработку ошибок и отсутствие конструкции «Использование».

Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0" & _ 
          ";Data Source=" & ExcelFile & _ 
          ";Extended Properties=Excel 8.0;" 

Dim conn As OleDbConnection = Nothing 
Dim dt As System.Data.DataTable = Nothing 
Dim excelDataSet As New DataSet() 

Try 

    conn = New OleDbConnection(connString) 

    conn.Open() 
    dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing) 

    If dt Is Nothing Then 
     Return Nothing 
    End If 

    Dim excelSheets(dt.Rows.Count) As String 
    Dim i As Integer = 0 
    For Each row As DataRow In dt.Rows 
     excelSheets(i) = row("TABLE_NAME").ToString 
     System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1) 
     If i = SheetNumber Then 
      Exit For 
     End If 
    Next 

    Using excelCommand As New OleDbCommand("Select * from [" & excelSheets(SheetNumber - 1) & "]", conn) 
     Using excelAdapter As New OleDbDataAdapter(excelCommand) 
      excelAdapter.Fill(excelDataSet) 
     End Using 
    End Using 


Catch ex As OleDbException 
    Throw 
Catch ex As Exception 
    Throw 
Finally 

    conn.Close() 

    If conn IsNot Nothing Then 
     conn.Dispose() 
    End If 

    If dt IsNot Nothing Then 
     dt.Dispose() 
    End If 

End Try 

Return excelDataSet 
1

Работайте с Excel Object Model непосредственно с .NET.

+0

эй вы можете показать мне пример того, как я открою файл Excel и прочитаю его? –

1

Вы можете использовать ADO.NET для чтения из таблицы Excel через OLEDB JET 4 поставщика

Это просто открывает файл первенствовать в качестве файла потока вместо открытия фактической таблицы Excel.

В качестве альтернативы вы можете использовать com-interop и просто установить видимое свойство объекта приложения на false.

См http://www.connectionstrings.com/excel

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

0

Если у вас есть более простая (т. Е. Маленькая) таблица Excel, которая не обязательно должна быть динамической, я думаю, что вы можете экспортировать ее как файл с разделителями-запятыми, а затем использовать объект loopcut и streamreader для анализа каждого разделенного запятой значения в массив.

Любопытное вокруг хотя ...

Смежные вопросы