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

  • Автор темы Seleniiti
  • Дата начала
S

Seleniiti

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

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

Помогите плиззз!!!!
 
A

Akupaka

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

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

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

Seleniiti

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

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

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





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

Akupaka

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

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
-непонятно - почему аплет
-просто из ХТМЛ можно вытащить выделенные элементы, потому как домина хранит чекбоксы в виде:
<input type="checkbox" name="$$SelectDoc" value="706401515F7F914FC325753D0050F848">
где вэлью - есть ЮНИД дока, т.о. создав поле (на форме) с именем SelectDoc (присутствие $ - не помню), можно в агенте получить все выделенные доки - как список ЮНИДов

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

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, но как написано в хелпе он сработает только если в свойствах агента выставить - для выделенных документов, а при выставлении этого свойства ничего не работает.

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

Seleniiti

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

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

Akupaka

хороший вопрос :) никогда об этом не думал :))
ану-ка гуру! где настроечки лежат? :))

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
у-у-у тогда сложно, ведь задача хттп запуститься, но настройки будут дефолтные (а какие - фиг знает), играться с созданием видов и доков в локальной АК - ябы не рискнул
потираньте свои региональные настройки - чтобы русские были
но вообще МСО - это плохоуправляемый глюкодром
может ODF Вас спасет...
МС обещала поддержку, да и ОО бесплатен и доступен для скачивания
 
S

Seleniiti

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!