Newsgroup: it.comp.appl.notes-domino
Titolo: esportazione in Excel

Chi di voi non ha mai provato ad esportare dati da Lotus in Excel?
Io lo faccio con un pulsante nella vista che esegue il codice che vi allego.
Esporta solo i documenti selezionati. E a me va bene cosě.
Il problema č che le righe esportate in Excel non sono nello stesso ordine
della vista e non riesco a capire perchč.
Come potrei fare ad esportare i dati nello stesso ordine in cui li vedo?
Ciao, Luka
Sub Click(Source As Button)
'Prende i dati dalla vista
 Dim x As Integer
 Dim y As Integer
 Dim strLen As Integer
 Dim ses As NotesUIworkspace
 Dim vw As NotesUIView
 Dim coldocs As NotesDocumentCollection
 Dim doc As NotesDocument
 Dim it As Variant
 Dim strDesc As String
 Dim strTrack As String
 Set ses = New NotesUIWorkspace
 Set vw = ses.currentview
 Set coldocs = vw.documents
 Set doc = coldocs.getfirstdocument
'Setta Excel
 Dim xlApp As Variant
 Dim xlSheet As Variant
 Set xlApp = CreateObject("Excel.application")
 xlApp.Workbooks.Add
 Set xlSheet = xlApp.Workbooks(1).Worksheets(1)
'Setta le intestazioni di colonna sulla prima riga
 xlSheet.Cells(1, 1).Value = "Data"
 xlSheet.Cells(1, 2).Value = "Area"
 xlSheet.Cells(1, 3).Value = "Filiale"
 For x = 2 To (coldocs.count + 1)
'Setta le variabili da esportare nelle colonne
  xlSheet.Cells(x, 1).Value = doc.Periodo
  xlSheet.Cells(x, 2).Value = doc.StArea
  xlSheet.Cells(x, 3).Value = doc.StFiliale
'Prende il documento successivo
  Set doc = coldocs.GetNextDocument(doc)
 Next x
'Setta la prima riga come in grassetto
 xlSheet.rows(1).font.bold = True
'Setta l'allineamento verticale centrato
 xlSheet.cells.Columns.VerticalAlignment = 2
'Setta il formato delle celle come migliaia
 xlSheet.Cells.Columns.NumberFormat = "#.##0"
'Setta il formato delle celle come mm/aaaa
 xlSheet.Columns(1).NumberFormat = "mm/aaaa"
'Setta la larghezza delle colonne
 xlSheet.Columns(1).Columnwidth = 10
'Adatta la dimensione delle colonne al contenuto
 xlSheet.Cells.Columns.AutoFit
'Setta l'orientamento orizzontale della stampante
 xlSheet.PageSetup.Orientation = 2
'Setta la prima riga come intestazione su tutte le pagine in stampa
 xlsheet.PageSetup.PrintTitleRows = "$1:$1"
'Visualizza un messaggio
 Msgbox "Esportazione completata", 64, "Excel Export"
'Mostra Excel
 xlApp.Visible = True
End Sub

Ciao, Luka
Anziche' usare le collection devi usare i WebNavigator (rispettano
l'ordine delle viste)
Ciao!

Ciao, Luka
Per l'ordinamento l'unproc va in ordine di inserimento.
Devi usare il viewnav.
Per il file che generi smantella "l'ufficio complicazioni affari
semplici"...
Fai un ".cvs" che č un file di testo che va bene per tutto ed č piů
semplice da fare e gestire.
Ciao.
-- 
/Zio Ciano che ne fa un casino di cvs.
Born to run Unix
-Fare bene non e` bene, fare male non c'e` male.-

 semplice da fare e gestire.
Peccato che se esporti su un csv puoi esportare solo i campi che
compaiono nella user-interface, in pratica solo quelli che vedi, mi
sembra anche di ricordare da prove fatte ed abbandonate che l'esporta
tronchi anche i campi al testo effettivamente visualizzato, e peggio
ancora se hai il testo di un camo su piu' righe nel file esportato trovi
delle righe con dei pezzi di testo facenti parte di un campo della riga
precedente. In poche parole si avvicina molto a cio' che comunemete
definisco schifo.
-- 
Dr.Ugo Gagliardelli,Modena,Italy-Certified uindoscrasher-AlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome
Spamers iros a la mierda/Spamers allez vous faire foutre
Spammers loop schijten/Spammers macht Euch vom Acker

 -Fare bene non e` bene, fare male non c'e` male.-
Hai ragione... ma non sono io a complicare le cose... c'è sempre un capo con
la sua bella richiesta dietro queste cose...
Comunque l'esportazione in Excel è meglio di un .cvs per molti motivi e
molti casi alcuni dei quali ti ha correttamente detto Ugo.
Però non ho ancora capito come uscirne... e pensare che risolverei quasi
tutto se sapessi fare i grafici di una vista in LN.
Grazie, Luka
PS (sfogo)
Ma io non sono uno sviluppatore, sono un apprendista amministratore (CAZZO!)

 Però non ho ancora capito come uscirne... e pensare che risolverei quasi
[cut]
Se i documenti non sono tanti potresti pensare di sortare un array con i
valori ricavati leggendo i documenti della vista, c'e' la funzione ls
QuickSort nel names.nsf, gia' pronta funzionante ed efficente, non mi
ricordo in che libreria di script e' ma viene usata per sortare i valori
nei campi lista, per esempio il campo dei partecipanti di un gruppo,
quando editi un documento gruppo compare un button "ordina componenti".


definisco schifo.
Va be, non avete capito una mazza...
Io da Notes faccio gli agenti che mi producono dei file .cvs con un metodo
vecchio come il cucco:
"Open file for Input"
Non gli esporto da nessuna parte gli creo.
Se non basta con i cvs puoi inserire nei campi anche le formule.
Capisco che in alcuni casi può essere una rottura di palle ma dal codice
postato ottengo lo stesso risultato scrivendone almeno la metà.
Inoltre si possono creare anche da una piattaforma "non windows"; se non
erro con gli OLE non c'è molta scelta...
Meditate e provate...
Ciao.
-- 
/Zio Ciano sempre convinto che si deva ripettare gli standard e le
possibilità che offrono i prodotti multipiataforma.


 Se non basta con i cvs puoi inserire nei campi anche le formule.
Ora che ho capito ti posso dire che faccio cosi' anch'io. 
Rimane il problema che leggendo i documenti da una collection non viene
onorato il termine di ordinamento ma solo quello di selezione, per cui
il problema dell'ordinamento rimane, la funzione di esportazione, invece
rispetta solo esclusivamente l'ordinamento e la selezione dei documenti
fatta dalla vista. 
E' per questo che dal tuo intervento avevo capito il famigerato
"esporta".
:))


fatta dalla vista. 
In effetti avevo scritto nel primo post, e OldsMobile nel secondo, che č
necessario usare i ViewNavigator.
Ci sono anche dei vecchi post con degli esempi per ottenere gli
ordinament corretti. 
Ciao.
-- 
/Zio Ciano.


 necessario usare i ViewNavigator.
Pensavo che i ViewNavigator per essere usati necessitino che la view sia
aperta nella user interface, o no? 
Non li ho mai usati, sicuramente perche' non ne ho capito l'esatta
funzionalita'.


 /Zio Ciano.
Mo li cerco...
Grazie, Luka
(non litigate)

 funzionalita'.
Ma non basta una NotesViewEntryCollection?
--
Juda of 3AM - juda(strudel)
despammed.com
/---------------/
Nella mia condizione di base sono piuttosto acido, ma difficilmente
rimango di sale.

 Ma io non sono uno sviluppatore, sono un apprendista amministratore
(CAZZO!)
 ...del cazzo? ;-)


 Juda of 3AM - juda(strudel)
despammed.com
In effetti il mio lo amministro da più di 30 anni senza grandi problemi...
ma ad amministrare quelli degli altri... son cazzi...
;-))))))))))
Luka

 ;-))))))))))
Stiamo scadendo...
--
Juda of 3AM - juda(strudel)
despammed.com


Il seguente Script è stato scaricato da 
http://www.notes.net
Bisogna creare un agente condiviso.
Esporta tutti i doc. della vista...
provatelo...
%REM
================================================================================
Export-Script
================================================================================
This Script has been created by D. Hasa, Yel GmbH, Switzerland  in April 
2001
It may be distributed and modified freely, as long as this header is kept 
intact.
Please report any bugs, fixes or enhancements to 
d...@yel.ch
This script exports a UIView 'As-Is' from Notes 5 to Excel 97
It has been tested with Notes 5.03/5.05 into Excel97
--> every column (include headers) is a column in Excel 
     and every value displayed of a document is a row in Excel
Every Value will be inserted as Text into Excel
================================================================================
Implementation
================================================================================
It is only a script without any Dialog-Boxes by exception --> Distribution 
and 
Implementation is very easy
Simply copy this whole file into an Agent:
Name:            Export to Excel
Run:                             Manually from Actions Menu
act on:          All documents in View
Run:                             Lotus Script
--> Export works in any View/Folder of that database
================================================================================
Updates:
================================================================================
================================================================================
%ENDREM
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim tmpCount As Integer
Dim nmore, nc, nchar
Sub Initialize
'Main Code
                 'SET THE AUTOFORMAT
                 Dim selList(0 To 20) As String
                 SelList(0) = "Simple"
                 SelList(1) = "Classic1"
                 SelList(2) = "Classic2" 
                 SelList(3) = "Classic3" 
                 SelList(4) = "Accounting1"
                 SelList(5) = "Accounting2"
                 SelList(6) = "Accounting3"
                 SelList(7) = "Accounting4"
                 SelList(8) = "Color1"
                 SelList(9) = "Color2"
                 SelList(10) = "Color3"
                 SelList(11) = "List1"
                 SelList(12) = "List2"
                 SelList(13) = "List3"
                 SelList(14) = "D3Effects1"
                 SelList(15) = "D3Effects2"
                 SelList(16) = "Format1"
                 SelList(17) = "Format2"
                 SelList(18) = "Format3"
                 SelList(19) = "Format4"
                 SelList(20) = "None" 
 
                 Dim session As New NotesSession
                 Dim workspace As New NotesUIWorkspace
                 Dim UIview As NotesUIView
                 Set UIview = workspace.CurrentView
                 Set db = session.CurrentDatabase
                 UIViewname = UIView.ViewName
                 UIViewAlias = UIView.Viewalias
                 Set view = db.GetView( UIViewName )
 
                 doformat = Messagebox("Format the Excel-Sheet?", 36)
                 If doFormat = 6 Then
                                 SelForm = 
workspace.Prompt(PROMPT_OKCANCELLIST, "AutoFormat-Form","Select the 
Autoformat-Form", "Test" , SelList) 
                                 TitleBar = Cint(Inputbox ( "How many 
degrees shall the Title-Line be turned", "Title-Turn", "0"))
                                 If Titlebar > 90 Then 
                                                 TitleBar = 90
                                 Elseif TitleBar < -90 Then
                                                 TitleBar = -90
                                 End If
                 End If
 
                 SelAutoForm = getAutoForm( selForm )
 
'Launch Excel and open it in the UI
                 Set excelAppObject = CreateObject("Excel.Application")
                 excelAppObject.Visible = True
                 Call excelAppObject.Workbooks.Add
                 Set excelWorksheetObject = excelAppObject.ActiveSheet
 
'Add the table labels
                 nc=64
                 nmore=0
                 Forall c In view.Columns
                                 nchar = countcol
                                 excelWorksheetObject.Range( nchar + 
"1").Value = c.Title
                 End Forall
 
                 m_let = nchar
                 nl=1
                 Set doc = view.GetFirstDocument
 
                 While Not ( doc Is Nothing ) 'And nl <= 20
                                 nl= nl+1 
                                 nc=64
                                 nmore=0
                                 ocount = 0
                                 For x= 1 To view.Columncount
                                                 nchar = countcol
                                                 With 
excelWorksheetObject.Range(nchar + Cstr(nl))
 .NumberFormat = "@"
                                                                 .Value = 
doc.ColumnValues(ocount)
                                                 End With
                                                 ocount=ocount+1  
                                 Next
                                 Set doc = view.GetNextDocument(doc)
                 Wend
 
 
 'formating the Worksheet
                 If doformat = 6 Then
                                 excelWorksheetObject.Range("A2:" + m_let 
+ Cstr(nl) ).Select
                                 excelAppObject.Selection.Columns.AutoFit
                                 excelWorksheetObject.Range("A1:" + m_let 
+ Cstr(nl)).Select
                                 With excelAppObject.Selection
                                                 .AutoFormat SelAutoForm, 
False, True, False, True, True, False
                                                 .VerticalAlignment = 
-4160
                                 End With
 
                                 excelWorksheetObject.Rows("1:1").Select
                                 With excelAppObject.Selection
                                                 .VerticalAlignment = 
-4107
                                                 .HorizontalAlignment = 
-4108
                                                 .WrapText = True
                                                 .Orientation = 
Cint(titlebar)
                                                 .ShrinkToFit = False
                                                 .MergeCells = False
                                                 RowHeight = 215
                                 End With
 
                                 excelWorksheetObject.Range("A:" + 
m_let).Select
                                 With excelAppObject.Selection.Font
                                                 .Name = "Arial"
                                                 .Size = 10
                                 End With
 
                                 excelAppObject.Selection.Columns.Autofit
                                 excelWorksheetObject.Range("A1").Select
 
                                 With excelAppObject.Windows(1) 
                                                 .SplitRow=1
                                                 .FreezePanes=True
                                 End With 
 
                                 With excelWorksheetObject.PageSetup
                                                 .Orientation = 2
                                                 .LeftHeader = 
"&""Arial,Bold""&18"+db.Title+" - "+ UIViewAlias
                                                 .CenterHeader = ""
                                                 .RightHeader = "Datum: 
&D"
                                                 .LeftFooter = ""
                                                 .CenterFooter = ""
                                                 .RightFooter = "Seite &P"
                                                 .PrintArea = ("A1:"+ 
m_let + Cstr(nl)) 
                                                 .PaperSize = 9
                                                 .CenterHorizontally = 
True 
                                                 .FitToPagesTall =False
                                                 .zoom = False
                                                 .FitToPagesWide=1 
 .PrintTitleRows=excelWorksheetObject.Rows("1:1").Address
                                 End With 
                 End If
 
                 excelAppObject.Visible = False
                 Messagebox "Export to Excel finished!", 64, db.title
                 excelAppObject.Visible = True
                 Exit Sub
End Sub
Function countcol
                 nc=nc+1
                 If nc=91 Then
                                 nmore = nmore+1
                                 nc=65
                 End If
                 If nmore > 0 Then
                                 nchar=Cstr(Chr(nmore+64))+Cstr(Chr(nc))
                 Else
                                 nchar = Cstr(Chr(nc)) 
                 End If
                 countcol = nchar
End Function
Function getAutoForm( selForm) As Integer
                 Select Case SelForm
                 Case "Simple"
                                 SelAutoForm = -4154
                 Case "Classic1"
                                 SelAutoForm =1
                 Case "Classic2"
                                 SelAutoForm =2
                 Case "Classic3"
                                 SelAutoForm =3
                 Case "Accounting1"
                                 SelAutoForm =4
                 Case "Accounting2"
                                 SelAutoForm =5
                 Case "Accounting3"
                                 SelAutoForm =6
                 Case "Color1"
                                 SelAutoForm =7
                 Case "Color2"
                                 SelAutoForm =8
                 Case "Color3" 
                                 SelAutoForm =9
                 Case "List1"
                                 SelAutoForm =10
                 Case "List2"
                                 SelAutoForm =11
                 Case "List3"
                                 SelAutoForm =12
                 Case "D3Effects1"
                                 SelAutoForm =13
                 Case "D3Effects2"
                                 SelAutoForm =14
                 Case "Format1"
                                 SelAutoForm =15
                 Case "Format2"
                                 SelAutoForm =16
                 Case "Accounting4"
                                 SelAutoForm =17
                 Case "Format3"
                                 SelAutoForm =19
                 Case "Format4"
                                 SelAutoForm =20
                 Case Else
                                 SelAutoForm =-4142
                 End Select
                 GetAutoForm = SelAutoForm 
End Function