Экспорт данных в Excel в Web

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

  1. Seleniiti

    Seleniiti Гость

    Добрый день.
    Искала поиском тем подобных этой много, но не нашла там как исправить то с чем столкнулась сама.
    Есть агент, производящий выгрузку в эксель из вьюхи.
    Выгружается нормально, но при числе записей больше 2 он русские символы пишет какими то кракозябрами(((. Думаю дело в кодировке но где и что надо прописать чтобы все правильно распознавалось?

    А еще - как сделать чтобы выгружались только помеченные записи?
    Нашла пример агента но там в его свойствах - вызывается только для выбранных документов, а у меня если это свойство ставить то при вызове браузере просто пишет "Страница не найдена" и работает только если в свойствах агента - для всех документов в базе.

    Помогите плиззз!!!!
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    интересно, как ты предполагаешь агент должен схавать то, что ты выбрал в браузере?
    домино со стороны веба ниче само не понимает, нужно самому все обрабатывать,
    т.е. твой агент должен принять каким-то образом идентификаторы (униды, например) нужных (выбраных) доков, но не через свойство Target, которое должно быть None, в этом случае

    не понял как выяснена взаимосвязь между кодировкой и кол-вом записей...
    мож проблема еще в чем-то?..

    я бы сделал так:
    сделал бы на странице (веб) при выборе доков, чтобы их униды записывались куда-то в поле,
    при нажатии на княпку экспорта, передавал бы эти униды в агент, через post
    агент, в свою очередь, достает документы, из них данные пихает в выгружаемый документ (эксель, текст, пофик)...
     
  3. Seleniiti

    Seleniiti Гость

    Ну я же могу например отметить в ембеддед вью отметить документы, а потом вызовом метода поместить их (только выделенные) в папку.
    document.applets.view.copySelectedDocumentsToFolder(String)
    - те таким образом все таки можно достучаться до того что я там наотмечала в браузере. Просто считаю что каждый раз создавать папку, засовывать из нее значения в эксель а потом после использования удалять - слишком долго и непрактично. Ну или чистить там значения и добавлять новые... Кроме того, если с выделенными записями работает яваскрипт, то неужели у классов Лотус скрипт нет методов чтобы их определить?

    А по поводу кодировки - нашла на одном форуме что такая ошибка возникает (правда там она возникала про 6 записях), но к сожалению возможной причины там так и не нашли.

    Извиняюсь если идеи неправильны просто столкнулась с лотусом не так давно и пока еще учусь) и не знаю его возможностей





    А про то что дело в кодировке подумала потому что если сохраненный файл открыть блокнотом то там все буквы русские написаны нормально
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ааахх, если с помощью апплетов, то я не подсказчик :unsure:
    тогда погляди какие еще свойства / методы предлагает апплет
    апплет и JavaScript - разные вещи
    LotusScript в веб не работает в отличие от JS и апплетов
    про кодировки можно будет говорить тогда, когда все остальное норм. работает

    если ты знаешь Java, то можешь попробовать слепить апплет, который будет с помощью Corba передавать данные на сервер...
     
  5. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    -непонятно - почему аплет
    -просто из ХТМЛ можно вытащить выделенные элементы, потому как домина хранит чекбоксы в виде:
    <input type="checkbox" name="$$SelectDoc" value="706401515F7F914FC325753D0050F848">
    где вэлью - есть ЮНИД дока, т.о. создав поле (на форме) с именем SelectDoc (присутствие $ - не помню), можно в агенте получить все выделенные доки - как список ЮНИДов

    про кодировку - воще джава предполагает ЮТФ, но бывают всяки случаи :unsure:...
    где код получающий значения?
     
  6. Seleniiti

    Seleniiti Гость

    Посмотрела сохраненные документы - там пишет что сохраняется в кодировке Western European (Windows). Если ее ручками поменять на Cyrilic русские сиволы отображаются нормально. Но поставила в настройках экселя - чтоб по умолчанию все страницы сохранял в кодировке Cyrilic. то он все равно сохраянет в первой. Не каждый же раз ручками менять, может можно при создании где то указать что сохранять надо именно в распознаваемой кодировке?

    Код агента для выгрузке всех значений из вьюхи :
    Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim dc As NotesDocumentCollection
    Dim view As NotesView
    Dim cview As NotesView
    Dim row As Integer

    Dim ViewName As String


    Set db = session.CurrentDatabase
    Set db=session.currentdatabase

    Set doc = session.DocumentContext
    Dim path As String
    Dim pos As Integer
    path= doc.Query_String_Decoded(0)
    pos = Instr(path, "&")
    ViewName= "ViewForExport"

    Set view=db.GetView(ViewName)
    Call WriteViewasExcel (view)
    End Sub

    Sub WriteViewasExcel (view As Notesview)

    Dim fileNum As Integer
    Dim entry As NotesViewEntry
    Dim vc As NotesViewEntryCollection
    Dim rowstring As String
    Dim cns As String

    Print |Content-Type:application/vnd.ms-excel|
    Print |<table border="1"><tr>|

    Print cns
    Print |</tr>|

    Set vc = view.AllEntries
    Set entry = vc.GetFirstEntry()
    While Not entry Is Nothing
    rowstring = ""

    Print |<tr>|
    Forall colval In entry.ColumnValues

    Print |<td>| & colval & |</td>|

    End Forall

    Print |</tr>|
    Set entry = vc.GetNextEntry(entry)
    Wend

    Print |</table>|

    End Sub

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

    Апплет использую тк у него фугкций больше чем просто у таблицы.
     
  7. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  8. Seleniiti

    Seleniiti Гость

    Спасибо. попробовала как там описано задать кодировку:
    Print "Content-Type: text/html; charset=UTF-8"
    Но все равно лучше не стало.
    Причем интересно - если делаешь тип - text/html, то смена кодировки срабатывает! Проблемы когда подставляешь чтоб выгрузка в эксель шла :blink:

    а по поводу настроек сервера... Я знаю что вопрос наивный но просто интересно - если у меня стоит только клиентская часть и дизайнер а в браузере просматриваю просто как предварительный просмотр того что получилось то откуда берутся настройки для выгрузки, ведь по сути серверной то части на компе нету, тогда где смотреть надо настройки?
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    хороший вопрос :) никогда об этом не думал :))
    ану-ка гуру! где настроечки лежат? :))

    но мой совет таков, самый лучший тест - тест на сервере, если предполагается, что ПО будет серверное
     
  10. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    у-у-у тогда сложно, ведь задача хттп запуститься, но настройки будут дефолтные (а какие - фиг знает), играться с созданием видов и доков в локальной АК - ябы не рискнул
    потираньте свои региональные настройки - чтобы русские были
    но вообще МСО - это плохоуправляемый глюкодром
    может ODF Вас спасет...
    МС обещала поддержку, да и ОО бесплатен и доступен для скачивания
     
  11. Seleniiti

    Seleniiti Гость

    Ну с кодировкой ладно, скорее всего, думаю что все таки надо будет смотреть что там будет если нормально настроить сервер.
    По поводу выгрузки в эксель.
    Выделенные данные из вьюхи я могу получить двумя способами:
    document.applets.view.copySelectedDocumentsToFolder(String) - JS
    @Command( [FolderDocuments] ; folderName ; moveOrCopy ) - @формула

    из фолдера данные я могу экспортировать в эксель через Lotus Script. Но, если это навешивать на кнопки, то получится что придется нажимать 2 кнопки (чтобы поместить в фолдер и удалить из него) + еще фолдер надо создать (временны для каждого пользователя - это тоже LS). а есть ли способ все эти действия (вызов команды и вызов функции на Ls) поместить на событие нажатия только одной кнопки? Или я уже совсем в дебри полезла....
     
Загрузка...

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