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

SkyRanger

Active Member
17.03.2007
44
0
38
Магадан
#1
Есть вьюха
первое поле - номер во вьюхе
остальные поля с данными текстовыми и одно поле многострочное.

Выгружаю все это щастье в 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

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

morpheus

скриптописец
07.08.2006
3 915
1
34
Украина, Киев
#2
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
 

DNT

Постоялец форума
Lotus team
12.10.2005
590
7
37
Украина, Одесса
#3
Для: SkyRanger

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

Хотя если у тебя во вьюхе отображены все поля которые нужны для выгрузки проще использовать NotesViewNavigator : http://notesnet.ru/nn/notesnet.nsf/note/C0...3256F58004AA385

ИМХО...

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

SkyRanger

Active Member
17.03.2007
44
0
38
Магадан
#4
С крякозябрами разобрался, оказывается если включить Total, то он и выводит какой то бред в каждой строке в этом столбце :D Если выключить то столбец вообще не выводится...

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

DNT

Постоялец форума
Lotus team
12.10.2005
590
7
37
Украина, Одесса
#5
<!--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]

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

RAJ

Well-Known Member
17.01.2007
440
0
38
Украина, Днепр
#6
@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 и т.п