Производительность при чтении файла Excel с использованием OpenXML - PullRequest
0 голосов
/ 13 мая 2011

На данный момент я читаю все версии файлов Excel с помощью oledbreader.я передал DLL для чтения файлов Excel 2010.но я не могу прочитать некоторые файлы Excel 2010, используя oledbreader.поэтому я хотел бы использовать openxml для чтения всех файлов Excel.Есть ли какие-либо проблемы с производительностью в этом?что лучше?

1 Ответ

2 голосов
/ 16 мая 2011

Мне очень повезло, используя следующий код для извлечения имен таблиц (имен рабочих таблиц) и имен столбцов из электронных таблиц Excel.

Private Sub GetWorksheetData

  Dim xlBaseConnStr1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=XLS;Extended Properties=""Excel 8.0;HDR=Yes"""
  Dim xlBaseConnStr2 As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=XLS;Extended Properties=""Excel 12.0 Xml;HDR=YES"""
  Dim xlName As String
  Dim conStr As String

  Dim oDia As New OpenFileDialog

  oDia.ShowDialog()

  xlName = oDia.FileName

  If xlName = "" Then
     Exit Sub
  End If

  Dim extType As String = Path.GetExtension(xlName)
  Select Case extType
     Case ".xls"
        conStr = xlBaseConnStr1.Replace("XLS", xlName)
     Case ".xlsx"
        conStr = xlBaseConnStr2.Replace("XLS", xlName)
     Case Else
        MessageBox.Show("Unrecognized file type")
        Exit Sub
  End Select

  Dim dtSheets As New DataTable

  Using cn As New OleDbConnection(conStr)
     cn.Open()
     dtSheets = cn.GetSchema("Columns")
  End Using

  DataGrid1.ItemsSource = dtSheets.DefaultView

End Sub

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

enter image description here

Вам нужно будет импортировать следующие пространства имен, чтобы это работало:

Imports System.Data.OleDb
Imports System.Data
Imports Microsoft.Win32
Imports System.IO

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...