как поддерживать связь с Excel с быстрой загрузкой данных - PullRequest
0 голосов
/ 28 апреля 2011

Я создаю веб-сайт для торговли с торговыми фидами из источника в листе Excel Я должен показать данные из листа Excel в виде сетки. Когда я устанавливаю соединение, оно перестает работать из-за быстро меняющихся данных; каждая ячейка на листе меняет значение 1-3 раза в секунду. Я использую Ajax Timer с интервалом 100. Вот мой код:

  Public Function RetrieveExcelData(ByVal excelSheetName As String, ByVal sheetNumber As Integer) As DataSet
        Dim objConn As OleDbConnection = Nothing
        Dim dt As System.Data.DataTable = Nothing
        Try
            ' Connection String.
            Dim connString As [String] = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Users\Vishal\Desktop\TESTING COLOURfor web1.xls;Extended Properties=Excel 8.0;"
            ' Create connection object by using the preceding connection string.
            objConn = New OleDbConnection(connString)
            ' Open connection with the database.
            objConn.Open()
            ' Get the data table containg the schema guid.
            dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
            If dt Is Nothing Then
                Return Nothing
            End If
            Dim excelSheets As [String]() = New [String](dt.Rows.Count - 1) {}
            Dim i As Integer = 0
            ' Add the sheet name to the string array.
            For Each row As DataRow In dt.Rows
                excelSheets(i) = row("TABLE_NAME").ToString()
                i += 1
                If i = sheetNumber Then
                    Exit For
                End If
            Next
            Dim excelCommand As New OleDbCommand("Select * from [" + excelSheets(sheetNumber - 1) & "]", objConn)
            Dim excelAdapter As New OleDbDataAdapter(excelCommand)
            Dim excelDataSet As New DataSet()
            excelAdapter.Fill(excelDataSet)
            Return excelDataSet
        Catch ex As OleDbException
            Throw ex
        Catch ex As Exception
            Throw ex
        Finally
            ' Clean up.
            If objConn IsNot Nothing Then
                objConn.Close()
                objConn.Dispose()
            End If
            If dt IsNot Nothing Then
                dt.Dispose()
            End If
        End Try
    End Function

1 Ответ

2 голосов
/ 28 апреля 2011

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

Вы упоминали, что Excel получает данные несколько раз в секунду.Каков источник данных?Компонент RTD?Bloomberg API?Я бы постарался избежать среднего шага хранения данных в электронной таблице.

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