• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Проблемы с выгрузкой информации в Excel

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

SkyRanger

Есть вьюха
первое поле - номер во вьюхе
остальные поля с данными текстовыми и одно поле многострочное.

Выгружаю все это щастье в excel:

Код:
Sub Click(Source As Button)
Dim WS As New NotesUIWorkspace	
Set session = New NotesSession
Set db=session.CurrentDatabase

Print "Report being creating!!!"

Set UiView=WS.CurrentView
ViewString=UiView.ViewName

Set v=db.GetView(ViewString)

Set xl = CreateObject("Excel.Application")
Set xlWbk = xl.Workbooks.Add("C:\Documents and Settings\User\Application Data\Microsoft\Шаблоны\REP_OBRASH_1.xlt")

xlWbk.ActiveSheet.Rows("8:8").Select


row=8

Set docX=v.GetFirstDocument
While Not docX Is Nothing
col=1
Forall cValue In docX.ColumnValues
xlWbk.ActiveSheet.Cells(row, col)=cValue
xlWbk.ActiveSheet.Cells(row, col).Borders.LineStyle = 1
col=col+1			
End Forall
row=row+1
xlWbk.ActiveSheet.Rows(row).Insert
Set docX=v.GetNextDocument(docX)
Wend

xlWbk.ActiveSheet.Cells(row, 1)="Всего"
xlWbk.ActiveSheet.Cells(row, 1).Borders.LineStyle = 1
xlWbk.ActiveSheet.Range("A8").Borders.LineStyle = 1

xlWbk.ActiveSheet.Range("A7").Select

xl.Visible=True

End Sub

Первый столбец выгружется вместо циферь крякозябры и многострочное поле с квадратиком в конце каждой строки. Использование @Text() не помогает.

Что я делаю не так???

И еще

xlWbk.ActiveSheet.Range("А"+Str(row)+":"+"E"+Str(row)).Borders.LineStyle = 1

почему тут ошибку дает??? Если указывать конкретно все работает, а выражением - отказывается :)
 
M

morpheus

1. Почему не используете NotesViewEntryCollection class
2. xlWbk.ActiveSheet.Range("А"+Str(row)+":"+"E"+Str(row )).Borders.LineStyle = 1 - пачему в обоих случаях row... имхо чтото не то
3. Про краказяблы.... посмотрите в дэбагере , что вы вообще туда передаёте ( что у Вас есть cValue - может массив)
4. Квадратики в конце строки - логичиские Enter( chr(10) ) ... атк как в ячейку экселя низя записать ни табулятор ни энтер( #10 ) , то и не пользуйтесь ими( на всякий случай используйте Trim или это )
5. Насчет полей , вот моя процедура рисования границ
Код:
Sub ShCreateTable(sh As Variant, S1 As Long, K1 As Integer, S2 As Long, K2 As Long)	 ' Рисование таблицы	 
sh.Range(sh.Cells(S1,K1), sh.Cells(S2, K2)).Borders(1).Weight = 2 ' левый	 
sh.Range(sh.Cells(S1,K1), sh.Cells(S2, K2)).Borders(2).Weight = 2 ' правый	 
sh.Range(sh.Cells(S1,K1), sh.Cells(S2, K2)).Borders(3).Weight = 2 ' верхний	 
sh.Range(sh.Cells(S1,K1), sh.Cells(S2, K2)).Borders(4).Weight = 2 ' нижний 
End Sub
 
D

DNT

Для: SkyRanger

Незнаю может ошибусь, но попробуй использовать не docX.ColumnValues, а пропиши для каждого поля:
xlWbk.ActiveSheet.Cells(row, col)= docX.имя_поля(0)
по крайней мере у меня токой подход работает.

Хотя если у тебя во вьюхе отображены все поля которые нужны для выгрузки проще использовать NotesViewNavigator :

ИМХО...

з.ы. упс, практически в одно время ответили
 
S

SkyRanger

С крякозябрами разобрался, оказывается если включить Total, то он и выводит какой то бред в каждой строке в этом столбце :D Если выключить то столбец вообще не выводится...

У меня столбец первый - номер по порядку во вьюхе - автоматический.
 
D

DNT

<!--QuoteBegin-SkyRanger+22:03:2007, 03:30 -->
<span class="vbquote">(SkyRanger @ 22:03:2007, 03:30 )</span><!--QuoteEBegin-->Если выключить то столбец вообще не выводится...
[snapback]59781" rel="nofollow" target="_blank[/snapback]​
[/quote]

где не выводится?
 
R

RAJ

@DocNumber и ряд других функци не возвращается через ColumnValues ,
в хелпе об этом написано:
A column value is not returned if it is determined by:
1. formula containing a UI-only function such as @IsExpandable or @DocNumber.
2. constant.

вместо значений возвращается что-то типа @A0 и т.п
 
Мы в соцсетях:

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