🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

[gelöst] Datumsdarstellung beim Importieren einer .xls

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
Mephisto
Beiträge: 6
Registriert: Mi 25. Jan 2012, 10:52

[gelöst] Datumsdarstellung beim Importieren einer .xls

Beitrag von Mephisto » Do 26. Jan 2012, 11:21

Tach zusammen!

Wieder mal stehe (bzw. sitze :P) ich da und weiß nicht weiter.

Ich hab eine xls-File, die ich in eine Tabelle aus LO importieren möchte. Dazu habe ich folgendes Makro (nur ein Auszug):

Code: Alles auswählen

 ' Object for the new sheet     
	    oNewSheet = _
	     oImport2Calc.Sheets().getByName( sSheetName )
	
	    ' Determine Filter
	    Dim FileProperties(0) AS New com.sun.star.beans.PropertyValue
	    FileProperties(0).Name = "FilterName"
	    FileProperties(0).Value ="MS Excel 97"
							 
	
	    ' Open File
	    oXLS = _
	     StarDesktop.loadComponentFromURL( _
	     sUrl, "_blank", 0, FileProperties())
	        
	    ' Identify the area of data
	    oSourceSheet = oXLS.Sheets( 0 )
	    
	    Dim iiColumns AS Long
	    Dim iiRows AS Long
	    iiColumns = _
	        iC2C_getLastUsedColumn( oSourceSheet )
	    iiRows = _
	        iC2C_getLastUsedRow( oSourceSheet )
	        
	    ' pull out all data AS an array
	    oSourceArea = _
	     oSourceSheet.getCellRangeByPosition( 0, 0, iiColumns, iiRows )
	        
	    allData = _
	     oSourceArea.getDataArray()
	        
	    ' Target area in the same size set
	    oEndArea = oNewSheet.getCellRangeByPosition( 0, 0, iiColumns, iiRows )
	     ' purely write Data array
	     oEndArea.setDataArray( allData() )
	    
	    ' CSV file closed  
	    oXLS.close( TRUE )
Eines der zu importierenden Spalten enthält ein Datum. D.h. je nach voreinstellung wird dieses auch als 01/01/2000 oder 01.01.2000 dargestellt.
Wenn ich es jedoch importieren möchte, habe ich in meinem LO Dokument beim Datum immer eine (scheinbar) zufällige Zahl stehen. So wird beispielsweise aus "30.03.2012" eine "40998".

Wie bekomme ich LO dazu mir mein Excel-File zu importieren? Wenn ich auf "Einfügen --> Tabelle aus Datei" gehe funktioniert alles einwandfrei. Aber den Makrorecorder kann man diesbezüglich in die Tonne haun ;)

Schonmal vielen dank fürs Durchlesen! Wäre über Hilfe sehr dankbar!
Zuletzt geändert von Mephisto am Do 26. Jan 2012, 14:20, insgesamt 1-mal geändert.

Mephisto
Beiträge: 6
Registriert: Mi 25. Jan 2012, 10:52

Re: Datumsdarstellung beim Importieren einer .xls

Beitrag von Mephisto » Do 26. Jan 2012, 14:20

hi egsel!

Wenn ich die Zelle als Datumsfeld spezifiziere, wird das Feld richtig dargestellt.

Als Basic-Code hab ich es jetzt folgendermaßen gelöst:

Code: Alles auswählen

	    rem ----------------------------------------------------------------------
		rem define variables
		dim document   as object
		dim dispatcher as object
		rem ----------------------------------------------------------------------
		rem get access to the document
		document   = ThisComponent.CurrentController.Frame
		dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
		
		ThisComponent.CurrentController.select(oNewSheet.columns(92)) 
		
		rem ----------------------------------------------------------------------
		dim args1(0) as new com.sun.star.beans.PropertyValue
		args1(0).Name = "NumberFormatValue"
		args1(0).Value = 36 ' 36 = DD.MM.JJJJ
		
		dispatcher.executeDispatch(document, ".uno:NumberFormatValue", "", 0, args1())
Vielen Dank!


An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.



❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten