DISKUSE
Jak omezit vkládání textu do textového pole z kláv... 
04.04.2024 13:55

HCL Domino na NAS QNAP (1)
20.02.2024 10:34

Vložení přílohy do dokumentu MS Word (3)
14.02.2024 20:54

Problěmy s diakritikou. (4)
06.02.2024 17:34

AI pomocnici 
15.01.2024 10:16

Export do pdf souboru (1)
12.01.2024 23:11

Agent přestává fungovat (1)
18.11.2023 06:42

RTF - Computed (2)
19.10.2023 13:00


ŠKOLENÍ


REKLAMA


KOMENTÁŘE
Diskusní skupina: Notes/Domino R5


OndřejLotus Notes -> Excel (602Tab)
Programátor

15.03.2004
07:24:25

ID: 483.0

Ondřej
Dobrý den přeji. Dají se nějakým způsobem převést data z Lotus Notes do již existujícího excelovského nebo 602Tab souboru (xls, wls)? Ať už z pohledu nebo jen z dokumentu? Předem děkuji za odpověď.
Marshi Nabízíme aplikaci Excel.InOut ...
Vývoj

15.03.2004
07:46:23

ID: 483.1


Nabízíme aplikaci Excel.InOut demo ke stažení viz link1
Karel A co tak pohledat na Internetu? Otestuj tohle !
15.03.2004
13:26:24

ID: 483.2


Option Explicit
Declare Function NEMGetFile Lib "nnotesws" Alias "NEMGetFile" ( wUnk As Integer, Byval szFileName As String, Byval szFilter As String, Byval szTitle As String ) As Integer
Declare Function NEMProgressBegin Lib "nnotesws.dll" ( Byval wFlags As Integer ) As Long
Declare Sub NEMProgressEnd Lib "nnotesws.dll" ( Byval hwnd As Long )
Declare Sub NEMProgressSetBarPos Lib "nnotesws.dll" ( Byval hwnd As Long, Byval dwPos As Long)
Declare Sub NEMProgressSetBarRange Lib "nnotesws.dll" ( Byval hwnd As Long, Byval dwMax As Long )
Declare Sub NEMProgressSetText Lib "nnotesws.dll" ( Byval hwnd As Long, Byval pcszLine1 As String, Byval pcszLine2 As String )
Const NPB_TWOLINE% = 1 '1 is for the big "in its window" progress bar
Const NPB_NOTEXT%=32 'and 32 is for the small blue line at the bottom of the screen
Const xlAutomatic = -4105
Const xlBottom = -4107
Const xlCategory = 1
Const xlCenter = -4108
Const xlColumnClustered = 51
Const xlContinuous = 1
Const xlDataLabelsShowValue = 2
Const xlDataLabelsShowPercent = 3
Const xlEdgeBottom = 9
Const xlEdgeLeft = 7
Const xlEdgeRight = 10
Const xlEdgeTop = 8
Const xlHairline = 1
Const xlInsideHorizontal = 12
Const xlInsideVertical = 11
Const xlLandscape = 2
Const xlLeft = -4131
Const xlLine=4
Const xlLineMarkers = 65
Const xlLocationAsObject = 2
Const xlMedium = -4138
Const xlNone = -4142
Const xlPie=5
Const xlPortrait = 1
Const xlRows = 1
Const xlThick = 4
Const xlThin = 2
Const xlTop = -4160
Const xlValue = 2
Dim text As String
Dim i As Integer
Sub Click(Source As Button)
'This sub will generate an Excel spreadsheet using all data from a view.
Dim szFilter As String
Dim startTime As Single
Dim processingTime As Single
Dim session As New NotesSession
Dim db As NotesDatabase
Dim v As NotesView
Dim dc As notesdocumentcollection
Dim ws As New notesuiworkspace
Dim uiview As NotesUIView
Dim docX As NotesDocument
Dim promptlist(3) As String, choice As String, promptlist2(1) As String, exportall As String
Dim platform As String, view As String
Dim xl As Variant, xlWbk As Variant, xlSheet As Variant, hwnd As Variant, xlsFileName As Variant
Dim row As Integer, col As Integer, numdocs As Integer

' On Error Goto errorHandler3
'Check to see if the user is on a MacIntosh
'the "Create Object" function does not run on a Mac
platform = session.Platform
If Not Instr (platform, "MacIntosh") = 0 Then
Messagebox ("Tato funkce není kompatibilní s platformou MacIntosh. Použijte prosím PC pro konverzi dat do tabulky.")
Exit Sub
End If
promptlist(0)="Nová tabulka - Zobrazit před dokončením"
promptlist(1)="Nová tabulka - uložit přímo na disk"
promptlist(2)="Otevřít existující soubor Excelu - Zobrazit před dokončením"
promptlist(3)="Otevřít existující soubor Excelu - uložit přímo na disk"
choice=ws.prompt(PROMPT_OKCANCELLIST, "Výběr akce", "Prosím, zvolte volbu provedení exportu.", promptlist(0), promptlist)
If (choice="") Then
Exit Sub
End If

promptlist2(0)="Všechny záznamy"
promptlist2(1)="Pouze vybrané záznamy"
exportall=ws.prompt(PROMPT_OKCANCELLIST, "Export výběru", "Exportovat vše?", promptlist2(0), promptlist2)
If (exportall="") Then
Exit Sub
End If

'Get appropriate file names when required
szFilter = "Tabulka Excelu|*.xls|Všechny soubory|*.*|"
If choice = promptlist(0) Then
Else
xlsFileName = ws.OpenFileDialog (False, "Vyberte tabulku", szFilter)
If xlsFileName(0) ="" Then
Exit Sub
End If
End If

'Set the session variables
startTime = Timer
Set db = session.CurrentDatabase
Set dc = db.unprocesseddocuments
Set uiview = ws.currentview
Set v = uiview.view
If exportall="Všechny záznamy" Then
Else
Dim folderName As String
Randomize
folderName="TmpExportView" + Cstr (Int(Rnd()*100)) 'modifikace by RM
Dim doc As notesdocument, newdoc As notesdocument
If Not v Is Nothing Then
Set doc=db.getdocumentbyunid(v.universalid)
If Not doc Is Nothing Then
Set newdoc=doc.copytodatabase(db)
Call newdoc.replaceitemvalue("$Title",foldername)
Call newdoc.replaceitemvalue("$Flags","3FY")
Call newdoc.save(True,True)
End If
End If
Set v = db.getview(folderName)
Call dc.putallinfolder(folderName)
End If
numDocs=v.allentries.count

' Initialise Progress Bar
hwnd = NEMProgressBegin( NPB_TWOLINE ) ' use window style progress bar
NEMProgressSetBarRange hwnd, numDocs ' set range of bar to number of rows
NEMProgressSetText hwnd, "Expor pohledu do Excelu.", "Start Exportu ..."

Set xl = CreateObject("Excel.application")
If choice = promptlist(0) Or choice = promptlist(1) Then
Set xlWbk = xl.Workbooks.Add
Else
Set xlWbk = xl.Workbooks.Open(xlsFileName(0))
End If
Set xlSheet = xlWbk.Worksheets(1)
Call xlSheet.Activate
On Error Goto errorHandler
xlSheet.Name = "Ewine Export"
xl.Cells.select
xl.Selection.ClearContents

'Start filling in the header column. You can get rid of this if you want to, but then get rid of the section lower that highlights it...
col=1
With xlSheet
Forall vColumn In v.Columns
If vColumn.IsHidden = True Then
Else
.Cells(1, col)=vColumn.Title
col=col+1
End If
End Forall
End With


'Row by Row, Column by Column, fill in the values
'
Dim tempItem As Notesitem
Dim tempVal As String

Set docX=v.GetFirstDocument
row=2
On Error Goto errorHandler
With xlSheet
While Not docX Is Nothing
col=1
Forall cValue In docX.ColumnValues
.Cells(row, col)=Implodes(cValue, Chr(10))
continue:
col=col+1
End Forall
row=row+1
If row Mod 10 = 0 Then
processingTime = Timer - startTime
NEMProgressSetBarPos hwnd,row
NemProgressSetText hwnd, "Export pohledu do Excelu.", "Export: "& Cstr(row) & " z " & Cstr(numDocs) & " rec za " & Format$(processingTime, "0.00") & " sec., AVG = " & Format$(row / processingTime , "0.000")
End If
Set docX=v.GetNextDocument(docX)
Wend
End With
On Error Goto errorHandler2

'Set sizing, fonts, etc to make the spreadsheet readable.
xl.Cells.select
xl.selection.Font.Name = "Verdana"
xl.selection.Font.Size = 9
xl.Rows("1:1").Select
xl.Selection.Font.Bold = True
xl.selection.Font.size = 12
xl.selection.RowHeight = 15
xl.Cells.select
xl.selection.columnwidth = 100
xl.selection.columns.Autofit
xl.selection.rows.Autofit
xl.selection.VerticalAlignment = xlTop
xl.ActiveSheet.Range("A1").Select

'Stop Progress Bar
NEMProgressEnd hwnd


'Save and be gone!
On Error Goto errorHandler3
If choice = promptlist(1) Or choice = promptlist(3) Then
Call xlWbk.SaveAs(xlsFileName(0))
Call xlWbk.Close
Messagebox "Export je kompletní. Nyní můžete opět otevřít uložený soubor Excelu: "&xlsFileName(0)
Call xl.Quit
xl = ""
Else
xl.Visible=True
End If
' LotusScript code...
processingTime = Timer - startTime
Print "The script ran in " & Format$(processingTime, "0.00") & " seconds."
If exportall = promptlist2(1) Then
Call v.remove
End If

Exit Sub

errorHandler:
'This is called when there is bad data in a notes view, usually text in a date field, etc.
'Notes will show it, but it will fail to export correctly. This replaces the Excel cell with a bad data text.
Resume

errorHandler2:
NEMProgressEnd hwnd
Messagebox "Špatné nastavení tabulkového formátu ??!!"
Call xl.Quit
If folderName Then
Call v.remove
End If

xl = ""
Exit Sub

errorHandler3:
NEMProgressEnd hwnd
Messagebox "Špatný název adresáře. Prosíme o správné zadání."
Call xl.Quit
xl = ""
If folderName Then
Call v.remove
End If
Exit Sub
End Sub
Function Implodes(Array As Variant,Separator As String) As String

If Isarray(Array) Then
For i=0 To Ubound(Array)
If i=Ubound(Array) Then
text=text & array(i)
Else
text=text & array(i) & separator
End If
Next
Implodes=text
Else
Implodes=Array
End If
End Function
kKarel Marshi - mrkněte se na ten váš web.
15.03.2004
16:20:36

ID: 483.3


Zase jedna firma co se prezentuje jak je i nás oblibou?
Jenom "blablabla-bolením"? Krásné - Frejmset ve frejmu. Fakt sila! Škoda, že nejde poslat obrázek. To by jste měli reklamu jak vyšitou.
Takže už ve vývoji myslete na koncový vzhled.
Martin Karle, karle...


16.03.2004
08:32:25

ID: 483.4


... spoustě lidem je to blábolení příjemné, protože za pár švestek koupí produkt, na který nemusí sáhnout. Kdyby každý hledal na internetu tak nikdo nemá čas nic dělat a nikdo nic neprodá :-)
viktor Převod z LN do MS Excelu ...
16.03.2004
09:03:04

ID: 483.5


Nejjednodušší (v LN 6):

Z pohledu pomocí menu Edit-Copy Selected as Table (do clipboardu) a v Excelu Úpravy-Vložit (Paste). Protože to funguje i do OpenOffice Calc, mohlo by to fungovat i pro 602Tab.

Z dokumentu také kopie přes Clipboard.

Jinak můžete vyzkoušet export z pohledu LN - třeba přes Lotus 1-2-3 (s příponou .wk4). MS Excel s tím umí pracovat.
Karel Nikdo se nebrání - nakupování
16.03.2004
09:56:03

ID: 483.6


to bylo to: Martin
Fascinuje mne to, že jsem si to prubnul. A když je to za peníze, tak by to taky mělo mít určitou funkcionalitu na úrovni. Doba 4.5 aplikací skončila!
Když se podívám na dodavatelské stránky www.allfornotes.com - tak rekurzivní ve frejmech.
Co k tomu říci více?

Nic moc.

To Viktor - To je řešení pro LN 6.x a ještě pro zdatné pracovníky. Řeč šla původně o appendování obsahu XLS souboru.
Chci vidět ty uživatele.
------------------------------------
1) - když mám za něco platit, tak ať to za něco stojí a má to alespoň dobrou a slušnou funkcionalitu
2) - když se podívám na stránky dodavatele, kterému mám platit, tak ať to,pro Bůh, za něco stojí.
3) - Ani to co je na Internetu nemusí být špatné jen proto, že to je "zadarmo"

Nic není zadarmo, ani Vaše psaní a ztracený čas.
Příklad co jsem poslal je stažený a upravený + používaný script, který funguje v několika mých aplikacích.

Takže to, že se věnuji Ondřejovi, je 100* lepší, než-li mu nutit placenou černou skříňku a nebo zboží, jehož obal stojí za .. a chybějí mu kolečka a já nevím co.
Navíc je to po záruce (©2001)

A tak se v tomto státě chová daleko, daleko více firem.
lubm Pane Karle, promiňte hloupému
18.03.2004
11:50:53

ID: 483.7


Zkoušel jsem Váš skript. Nedal jsem ho do tlačítka ale pro zkoušku do agenta.
Když jsem ho spustil, tak mi vyběhla chyba na těchto řádcích:
Set v = db.getview(folderName)
Call dc.putallinfolder(folderName)
...
numDocs=v.allentries.count
o pár řádků dřív je
folderName="TmpExportView" + Cstr (Int(Rnd()*100)) 'modifikace by RM

Jak se může nastavit tato složka a přesouvat do ní dokumenty když neexistuje?

Jestli je to příliš triviální dotaz, tak se omlouvám.
Děkuji za odpověď
Karel Aniž bych nějak přemýšlel
18.03.2004
20:10:57

ID: 483.8


mám to v pohledu pod tlačítkem. Agenta nepoužívám, ale jde to samozřejmě upravit pod agenta.
Tak se na to mrknu o víkendu a dám vědět.
Martin PutInFolder


19.03.2004
09:22:39

ID: 483.9


Tahle akce si složku vytvoří, pokud neexistuje. Ale na zbytek dotazu neodpovídám :-)
lubm Re: PutInFolder
19.03.2004
11:40:49

ID: 483.10


Ano, vytvoří. Ale ve skriptu se na ní odkazuji ještě před voláním tohoto příkazu. A navíc (alespoň u mě)je docela dost dlouhá časová prodleva, než se vytvoří.
Karel Aha, skript je pod tlačítko -
22.03.2004
01:27:09

ID: 483.11


protože pracuje s vybranými dokumenty v pohledu.

Pokud ho chceš v agentovi, musíš provést výběr dokumentů a pak to nebude hlásit chybu!

Ahoj - držím palce
lubm Re: musíš provést výběr dokumentů
25.03.2004
08:14:37

ID: 483.12


no jo, ale abych mohl udělat db.unprocesseddocuments, tak musím na nějakém dokumentu stát nebo mi vyletí chybová hláška už při spouštění agenta ?! A stát na dokumentu = mít vybraný alespoň jeden dokument (alespoň si to myslím).
Karel V principu ano,
25.03.2004
10:59:05

ID: 483.13


ten kód je z tlačítka v pohledu.

Tak jak je - a funguje. Po otevření pohledu (DB) stojím alespoň na jednom záznamu. A o to jde.
Vysleduj si funkcionalitu v případě exportu všech záznamů. To je a bude tvoje cesta.
Doporučuji Ti opravdu ten kód narvat do tlačítka pohledu a odkrokovat. Uvidíš jak funguje a co je nutné udělat.
Martin Re: Pane Karle, promiňte hloupému


25.03.2004
11:36:14

ID: 483.14


Zajímavě udělané, tyto řádky totiž na základě aktuálního pohledu vytvoří složku a pak se na ni dá nasetovat.

folderName="TmpExportView" + Cstr (Int(Rnd()*100)) 'modifikace by RM
Dim doc As notesdocument, newdoc As notesdocument
If Not v Is Nothing Then
Set doc=db.getdocumentbyunid(v.universalid)
If Not doc Is Nothing Then
Set newdoc=doc.copytodatabase(db)
Call newdoc.replaceitemvalue("$Title",foldername)
Call newdoc.replaceitemvalue("$Flags","3FY")
Call newdoc.save(True,True)
End If
End If
janeecko super
29.09.2006
11:10:40

ID: 483.16


Ten dlhy lotus script je super...je to opensource?? mozme ot pouzit v nejakej aplikacii?
peja a co tak NotesSQL
29.09.2006
12:56:03

ID: 483.17


NoteSQL umoznuje dotiahnut data z LN cez microsoft qurey(sucast excelu) pomocou ODCB
s LS / Notes SQL / komeční balík / Approach
02.10.2006
14:03:06

ID: 483.18


No jak vidím zase ruzné názory. Prodávat se musí a základ je le-li to uzavřené řešení či parametrické. A jinak spiše pokud se jedná o volný LS tak se kloním k nemu pokud je to zručný uživatel. A na stránku Notes SQL - sám ho již dlouhá léta používám, protože je to nejjednodušší jak rychle dostat jaká koliv dat z NSF do EXCELu či jinam. A hlavně pokud člověk vím může data dávat u jednodušších aplikací oběmi směry. Třeba do dnes používám Approach a propojuji tabulky Notes, DBF a jiné a dělám výstupy či importy do Notes.
Asi každého věc co je bližší a pro danou situaci vhodnější.

Přidejte názor
Autor:
Profese:
E-mail: i
URL:
Phone:
Předmět:
Obsah příspěvku (i):

Kolikátý je den v měsíci ? (číslovkou bez tečky)