2016-12-22 16 views
0

Есть ли способ прочитать все данные excel и поместить их в datatable или любой другой контейнер, чтобы я мог фильтровать данные на основе необходимых условий. Как показано в прикрепленном изображении, я хочу получить CuValue Partnumber, статус которого - «Успех», и мне нужна последняя запись, основанная на дате вычисления (последняя дата расчета). В приведенном ниже примере я хочу CuValue 11292, так как это последняя запись со статусом Success. enter image description here lue.Прочитайте данные из excel в vb6 и поместите в datatable

Заранее спасибо

+0

Какой формат файла Excel - это может быть .xls? –

ответ

-1

Есть много способов сделать это. 1. Вы можете создать таблицу DB доступа и импортировать, сохранив ваш лист, как файл, в первую очередь, в таблицу доступа. Затем вы можете писать запросы. 2. Вы можете создать sql DB и таблицу, написать код для импорта листа в эту таблицу. 3. Вы можете написать код в VBA и выполнить эту задачу, если ваши данные не очень большие. 4. Вы можете написать код C# для доступа к листу с использованием excel.application и офисных объектов, создать таблицу данных и запросить эту таблицу данных. Зависит от того, какие навыки вы хотите использовать для выполнения своей задачи.

+0

Привет, я хочу, чтобы это было сделано в приложении vb6. – Mahantesh

1

Ваш вопрос кажется очень широким, но вы правы, потому что есть много разных возможностей и подводных камней.

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

  • Вкратце: создайте базу данных, таблицу и хранимую процедуру. Скопируйте данные , необходимые в этой таблице, а затем запросите таблицу, чтобы получить результат .

Вы можете использовать ADO для выполнения этой задачи. Если он недоступен на вашем компьютере, вы можете загрузить и установить MDAC, распространяемый с веб-сайта Microsoft. Преимущество с OLE Automation заключается в том, что вам не нужно устанавливать Excel на целевой компьютер, где должен быть выполнен импорт, поэтому вы можете выполнить импорт также на стороне сервера.

С установленным ADO вам необходимо создать два объекта Connection, объект Recordset, чтобы прочитать данные из файла Excel и объект Command для выполнения хранимой процедуры, которая будет выполнять INSERT или UPDATE подмножества исходные поля в таблице адресатов.

Ниже приведены инструкции, которые вы должны расширить и настроить, если вы найдете его полезным для вашей задачи:

Option Explicit 

Dim PartNo as String, CuValue as Long, Status as String, CalcDate as Date 

' objects you need: 
Dim srcConn As New ADODB.Connection 
Dim cmd As New ADODB.Command 
Dim rs As New ADODB.Recordset 
Dim dstConn As New ADODB.Connection 


' Example connection with your destination database 
dstConn.Open *your connection string* 

'Example connection with Excel - HDR is discussed below 
srcConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
    "Data Source=C:\Scripts\Test.xls;" & _ 
     "Extended Properties=""Excel 8.0; HDR=NO;"";" 

rs.Open "SELECT * FROM [Sheet1$]", _ 
    srcConn, adOpenForwardOnly, adLockReadOnly, adCmdText 

' Import 
Do Until rs.EOF 
    PartNo = rs.Fields.Item(0); 
    CuValue = rs.Fields.Item(1); 
    CalcDate = rs.Fields.Item(6); 
    Status = rs.Fields.Item(7); 
    If Status = "Success" Then 
     'NumSuccess = NumSuccess + 1 
     ' copy data to your database 
     ' using a stored procedure 
     cmd.CommandText = "InsertWithDateCheck" 
     cmd.CommandType = adCmdStoredProc 
     cmd(1) = PartNo 
     cmd(2) = CuValue 
     cmd(3) = CalcDate 
     cmd.ActiveConnection = dstConn 
     cmd.Execute 
    Else 
     'NumFail = NumFail + 1 
    End If 
    rs.MoveNext 
Loop 
rs.Close 
Set rs = Nothing 
srcConn.Close 
Set srcConn = Nothing 
dstConn.Close 
Set dstConn = Nothing 

' 

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

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

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

  • Ловушки чтение из Excel:

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

Если вы поддерживаете имена полей, используйте HDR=YES, без всех первых трех строк используйте HDR=NO.

  • Всегда держите журнал «успех» и «Сбой» количество записей чтения в вашей программе, а затем сравнить эти значения с первоначальным общим количество строк в Excel.

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