Импорт из вложенного файла Excel

Тема в разделе "Lotus - Программирование", создана пользователем kilcher, 18 мар 2009.

Наш партнер Genesis Hackspace
  1. kilcher

    kilcher Гость

    Всем,доброго дня!

    Необходимо вытащить данные из файла xls в поле на форме. Как это сделать с указанием пути к файлу я знаю.
    Как быть,если файл лежит а ричтекст поле на этой же форме? Так же указывать путь? Или использовать GetEmbeddedObject?
    Заранее спасибо,за понимание и помощь
     
  2. abbatik

    abbatik Well-Known Member
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    rtitem.EmbeddedObjects

    Когда будешь доставать файл из ричтекста, сохранишь его на диске в темповой дирректории, откроешь по пути, по которому будешь его сохранять ;) Собственно после обработки, можешь его даже удалить, чтобы место на диске не захламлять (только не забудь закрыть объект Excel).
     
  3. kilcher

    kilcher Гость

    Я так понимаю без сохранения файла на диск не обойтись? :)
     
  4. abbatik

    abbatik Well-Known Member
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Стандартными средствами Лотуса - нет.
    А какие проблемы с сохранением? Еще раз повторюсь, что после обработки файл можно Kill-нуть ;)
     
  5. NickProstoNick

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

    Регистрация:
    22 авг 2008
    Сообщения:
    1.769
    Симпатии:
    39
    kilcher
    тю... детачить файл в темповую директорию... а дальше работать как обычно

    Извиняюсь.... долго писал
     
  6. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.168
    Симпатии:
    306
    ну воще-то потребность сохранения файла на диск, в данном случае - результат убогости реализации доступа к COM
    вот ежели не пользоваться эхель файлом - то мона и не пользовать COM, и как следствие - не сохранять файло в темп
    но это совсем др. история ;)
     
  7. kilcher

    kilcher Гость

    Прошу прощения,если вопрос покажется глупым. Но что то не могу найти как удалять файл по пути?
     
  8. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
  9. kilcher

    kilcher Гость


    Спасибо! Ни у кого нет примера экспорта значения поля в екселевскую ячеку? Или хотя бы как правильно писать дпнную сторку в коде
    xlsheet.xlCells(row, 1).Value= doc.a(0) + {}

    При таком написании ошибка :) ,видимо xlsheet здесь не в кассу?
     
  10. K-Fire

    K-Fire Гость

    Попробуй просто Cells() вместо xlCells. А вообще открываешь ексель, меню Сервис-Макрос-Редактор Visual Basic. Там жмешь F2 и потом на любом объекте или свойстве F1.
     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Что за xlCells? Должно быть просто Cells.
     
  12. kilcher

    kilcher Гость


    Спасибо,вроде работает. Да это я импортом перепутала. :)
     
  13. kilcher

    kilcher Гость

    Возникла еще одна проблема.
    В форме у меня есть ричтекст поле,из которого я беру файл Ecxel далее я его копирую в Temp,затем экспортирую данные в него.
    После чего мне следует заменить файл пероначальный,на тот что лежит теперь в Temp.
    Для этого я использую Set object = rtitem.EmbedObject ( EMBED_ATTACHMENT, "", "c:\TEMP\" & Cstr(fileCount)).

    Вобщем проблема в том что файл копируется с неизвестным форматом и не в поле,а в конец документа. В чем ошибка,подскажите пожалуйста!
    И вобще какого формата формируется файл(временный)в Temp?
     
  14. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.168
    Симпатии:
    306
    метод имеет свои ограничения..., но возможно Вам подойдет (так желательно чистить от аттачей и цеплять их поновой):
    Код (Text):
    Function RemoveAttachments(objdoc As NotesDocument, fld As String) As NotesRichTextItem
    Dim rtItem As NotesRichTextItem
    Dim docItem As NotesItem

    On Error Goto errorhandler
    Set docItem=objdoc.GetFirstItem(fld)
    DbgMsg("RichText:" & Cstr(docItem.Type = RICHTEXT))
    If docItem.Type=RICHTEXT Then
    Set rtItem=docItem
    Else
    Set rtItem=Nothing
    End If
    If objdoc.Hasembedded Then 
    If ( Not rtItem Is Nothing ) Then
    If (Not Isempty(rtitem.EmbeddedObjects))Then
    Forall o In rtitem.EmbeddedObjects
    Call o.Remove
    DbgMsg("RT field: remove attachments")
    End Forall
    End If
    Else
    If ( Not Isempty(objdoc.EmbeddedObjects)) Then
    Forall o In objdoc.EmbeddedObjects
    Call o.Remove
    DbgMsg("remove attachments")
    End Forall
    End If
    End If
    End If

    Do While Not objdoc.GetFirstItem("$FILE") Is Nothing
    objdoc.RemoveItem("$FILE")
    DbgMsg("remove fields: $FILE")
    Loop

    If (rtItem Is Nothing) Then
    Do While Not objdoc.GetFirstItem(fld) Is Nothing
    objdoc.RemoveItem(fld)
    DbgMsg("Remove non RT fields:" & fld)
    Loop
    Set rtItem=objdoc.CreateRichTextItem(fld)
    End If
    Set RemoveAttachments=rtItem
    ExitFunction:
    Exit Function
    errorhandler:
    Call RaiseError()
    Resume ExitFunction
    End Function
     
  15. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.168
    Симпатии:
    306
    кста эта трабла могет быть еще и из-за "нерпавильной" работы с переоткрытием и сохранением фронтэнда (индусы набокорезили)
    но ежели выполнить "пральную" последовательность - усё будет нормально
    где-то так:
    Код (Text):
        Dim rtItem As NotesRichTextItem
    Set rtItem=RemoveAttachments(objdoc, fld)

    fname=path & file      
    Call rtitem.EmbedObject( EMBED_ATTACHMENT, "", fname)

    '********************************************************* 
    Call objdoc.Save(True,False)
    Kill fname
    Call uidoc.Close(True)
    Set uidoc=wks.EditDocument(True,objdoc)
    uidoc.AutoReload=True
    Call uidoc.Refresh()
    Call uidoc.Save
     
Загрузка...

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