Import From Excel To Lotus

Тема в разделе "Lotus - Программирование", создана пользователем xKlonx, 12 май 2010.

  1. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    Народ пытаюсь вытянуть некоторые данные из Excel в Лотус.Подключаюсь с помощью ODBC драйвера,в панель управления->администрирование ->Источники данных (ODBC) ->Пользовательский DSN добавляю настройки Microsoft Excel Driver(.xls).Пытаюсь приконектится:
    Код (LotusScript):
    Dim con As New ODBCConnection
    Dim qry As New ODBCQuery
    Dim result As New ODBCResultSet
    Dim Session As New NotesSession
    Dim Db As NotesDatabase
    Dim COView As NotesView
    Dim CODoc As NotesDocument
    Dim BillDirectionDoc As NotesDocument
    Dim Row As Integer
    Dim BillDirection As String


    Set Db = Session.CurrentDatabase
    Set COView = Db.GetView(    "BillDirections:DirCode" )     

    Set qry.Connection = con
    Set result.Query = qry
    con.ConnectTo( "STAT2" )
    qry.SQL = "SELECT * FROM STAT2"
    result.Execute

    Do
    result.NextRow
    Row = Row + 1
    .............................................
    result.Execute вылетает ошибка:
    [​IMG]
    Может кто-то знает как правильно настроить драйвер?Заранее благодарен
     
  2. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    Я мучился с ODBC - плюнул. Ну не работает, хоть тресни.
    Все через COM делаю. Дешево и сердито.
    Еще через DB2 можно.
     
  3. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    из екселя в лотус это не кошерно
    сначала из екселя преобразовать в XML а уже потому DXML отработать на раз
    обещаю что скорость минимум в 100 раз будет больше :)
     
  4. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    ToxaRat
    Тут скорость не нужна так как это единоразовый импорт,особо извращатся неохота
     
  5. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    xRomax
    Я тоже пытался вытянуть с ODBC... не понравилось и сделал так
    Код (LotusScript):
    Function ConnectToXLS As Variant
    Dim ProfileDoc As NotesDocument
    Dim ADOConnection As Variant


    On Error GoTo OnErr

    Set ProfileDoc = GetProfileDocument
    If ProfileDoc Is Nothing Then
    ConnectToXLS = "1"
    Exit Function
    End If 

    Set ADOConnection = CreateObject("ADODB.Connection")

    With ADOConnection
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source="+ ProfileDoc.ExcelDebet( 0 ) + ";Extended Properties=Excel 8.0;"
    .Mode = 1
    .Open
    End With

    Set ConnectToXLS = ADOConnection

    Exit Function

    OnErr:
    Print Error
    Set ConnectToXLS = Nothing
    Set ADOConnection = Nothing
    Resume Rez

    Rez:

    End Function
    и так
    Код (LotusScript):
        Set XLSConnection = ConnectToXLS

    If XLSConnection Is Nothing Then
    GoTo OnErr
    End If

    Set RecordSet = CreateObject("ADODB.Recordset")
    RecordSet.LockType = 3
    RecordSet.CursorType = 2
    RecordSet.Open "Select * from [Sheet1$] where F2 <> '' " , XLSConnection

    While RecordSet.EOF = False
    ..... делаем то что надо
    Wend
    и настраивать ничего не надо
     
  6. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    NickProstoNick
    "Microsoft JET Database Engine:обьект "STAT2" не найден ядром базы данных Microsoft Jet. Проверьте существование обьекта и правильность имени и пути"
    Вылетает ошибка на строке выборки
    Код (LotusScript):
        RecordSet.Open "Select * from STAT2 " , XLSConnection
    Функция коннекта проходит нормально,получаю обжекты
     
  7. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    STAT2 - это страница в xls-файле?
    И вообще, покажи сам файл.
    А вообще, попробуй написать [Sheet1$] или какая у тебя там страница
     
  8. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    NickProstoNick
    Да,страница,файл также называется.Файл не могу показать так как это телефонный справочник компании
     
  9. Klido

    Klido Гость

    коллеги, разовый экспорт из экселя в таком простом случае - просто импортнуть :) какой такой код??? в крайнем случае, сделать форму+вьюху и тупо импортнуть... плюс там есть такие .COL файлы - параметризируют импорт...
     
  10. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    Klido
    А можно конкретнее,так как етого не делал раньше?
     
  11. Klido

    Klido Гость

    File-Import... ну и там далее... в хелпе про importing files - в клиентском и дизайнерском

    насколько помню, если вьюха точно совпадает со столбцами экселя + форма нормальная - в 3 клика делается прекрасно импорт...
     
  12. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    NickProstoNick
    Я правильно понял что ProfileDoc.ExcelDebet( 0 ) - поле с путем к файлу?
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    Klido
    поддерживаю

    из-за одного раза устраивать такой гимор... - этож надо так себя не уважать :)
    КОМ, ОДБЦ... - кто больше вспомнит МСпердуляторов усложняющих жисть? ;)

    делаем CSV файл (экспорт из хехеля), переименовываем его в txt, составляем col файл (примеры в хэлпе нотусей)
    импортим в нотуса (да хоть кодом) - стандартный пункт меню и соответ. собака
    col файл для задания типа полей и разделителей
     
  14. Klido

    Klido Гость

    lmike
    ну я обычно ограничиваюсь вьюхой и формой - при импорте там сразу спрашивает что да как... вооще не вопрос - даже если что не так, то ctrl+a Del, поправил формовьюшку - и повтор... куда как быстрее код писать....
     
  15. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    у мя в кажной базе есть вьюшка ($All) - столбецы дата создания, модификации, форма, с возможностью сортировки
    col файл позволяет отлавливать несоответ. типов и кол-ва данных (колонок)
     
  16. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    Klido
    Есть вьюха есть форма с полями,нажимаю импорт выбираю файл,выбираю форму нажимаю ок , результат: создается один пустой документ
     
  17. Klido

    Klido Гость

    xRomax
    ды кглянь в хелпе формат - в экселе должны столбцы называться как поля в форме.. ну и там галочками ещё потыцкать... при импорте
     
  18. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    Господа! Штож товорицца то. Надо человеку помочь решить разовую задачу. Все начали пальцы загибать. :)
    В хелп тыкать. XML? DXL? И прочее. А нахрена спрашивается?


    Код (LotusScript):
    Sub ImportFromExcel

    Dim session As New NotesSession
    Dim ws As New NotesUIWorkspace

    Set db = Session.currentdatabase

    filename = Inputbox$ ("Drive\Path\FileName.xls for the docs будут загружены.", "Укажите расположение файла импорта " ,"c:\export.xls")
    If filename = "" Then
    Exit Sub
    End If 

    formname = Inputbox$ ("Форма для загрузки?", "Enter ... " ,"Topic")
    If formname = "" Then
    Exit Sub
    End If 

    Set xlApp = CreateObject("Excel.application")
    Set ws = New NotesUIWorkspace  
    ' Установка видимости Excel -------------------------------------------------
    Watch = "No"
    If Watch = "Yes" Then YesNo = True Else YesNo = False
    xlApp.Visible = YesNo  
    ' открытие книги ------------------------------------------------------------

    Call xlApp.Workbooks.Open(filename, 0, True)
    Set xlsheet = xlApp.Workbooks(1).Worksheets(1)
    xlsheet.Activate

    Dim RowName As String  
    With xlsheet
    i=1 '' начинаем со второй строчки
    Do
    RowName = Trim(Str(i + 1))
    ' ---------------------------------------------------------
    ' создать           
    Set CurrDoc = New NotesDocument (db)
    CurrDoc.Form=formname
    CurrDoc.Category3=.Range("A" & RowName).Value '  
    CurrDoc.Category2=.Range("B" & RowName).Value '  
    CurrDoc.CatalogNumber=.Range("C" & RowName).Value '  Артикул
    Call CurrDoc.ComputeWithForm(True, True)   
    Call CurrDoc.Save(True, True)
    ' ---------------------------------------------------------
    Print i        
    i = i +1
    Loop While (Trim(.Range("A" + RowName).Value)<>"")  ''пока колонка "A" Category непустое :) 
    End With

    xlapp.activeworkbook.close
    xlapp.quit
    Set xlapp = Nothing

    Messagebox("Import file Excel " & FileName & " is complete. Всего создано " & i & " записей. ")
    Call ws.ViewRefresh

    End Sub
    By кто-то: "Мне не нужен совершенный код, мне нужен код который решает задачу..."
     
  19. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Да, путь к файлу!
     
  20. Klido

    Klido Гость

    NetWood
    Это из серии помочь человеку не задачку разовую решить, а получить экспириенс в области взаимодействия лотус-эксель :)
     
Загрузка...
Похожие Темы - Import From Excel
  1. fedotxxl
    Ответов:
    1
    Просмотров:
    3.551
  2. NickProstoNick
    Ответов:
    64
    Просмотров:
    20.227
  3. NickProstoNick
    Ответов:
    13
    Просмотров:
    4.355
  4. NickProstoNick
    Ответов:
    13
    Просмотров:
    4.746
  5. garrick
    Ответов:
    3
    Просмотров:
    440

Поделиться этой страницей