Forum: PC Hard- und Software libreoffice: Konvertieren von Tabellenkalkulation nach CSV *MIT* anderer Zeichencodierung


von earbsenzaehler (Gast)


Lesenswert?

hallo EDV-kenner,

ich habe als Datenbasis eine wachsende Anzahl 
Tabellenkalkulationsdateien (bereits ueber Hundert, es kommen alle paar 
Tage weitere hinzu) welche weiter zu verarbeiten ist und zwar als CSV 
mit UTF-8 Zeichencodierung.

Bisher konvertiere ich in 2 Schritten:
1
$ localc  --convert-to csv  data*.xlsx
2
func=xmlSecCheckVersionExt:file=xmlsec.c:line=188:obj=unknown:subj=unknown:error=19:invalid version:mode=abi compatible;expected minor version=2;real minor version=2;expected subminor version=25;real subminor version=26
3
convert /path/to/file/data*.xlsx -> /path/to/file/data*.csv using filter : Text - txt - csv (StarCalc)
4
:
5
[snip]
6
:
7
$
8
$ iconv  -f 8859_1  -t utf8  data*.csv  >  alldata_UTF8.csv
9
$

Offensichtlich kann LO mehr bei "--convert-to", zumindest steht es so 
bei
* 
<https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options#Token_7.2C_csv_export>;

Das macht mir Hoffnung, die konversion und die ZeichenUMcodierung in 
einem einzigen Schritt machen zu koennen.


PROBLEM

Alle meine Versuche bei "--convert-to csv:XXX", nach dem Doppelpunkt 
IRGENDWAS auszuprobieren ergeben KEINE Ausgabedatei und z.B. folgende 
Fehlermeldung:
1
$ localc  --convert-to "csv:44,34,UTF8,1,1/1"  data*.xlsx 
2
func=xmlSecCheckVersionExt:file=xmlsec.c:line=188:obj=unknown:subj=unknown:error=19:invalid version:mode=abi compatible;expected minor version=2;real minor version=2;expected subminor version=25;real subminor version=26
3
convert /path/to/file/data*.xlsx -> /path/to/file/data*.csv using filter : 44,34,UTF8,1,1/1
4
Overwriting: /path/to/file/data*.csv
5
Error: Please verify input parameters... (SfxBaseModel::impl_store <file:///path/to/file/data*.csv> failed: 0x81a)
6
$

FRAGE

Wer der geschaetzen Spezis kann hier mehr nutzbringende Info zu 
"--convert-to CSV:XXX" beisteuern?

In einem ersten Schritt waere mir ein beliebiges, UEBERHAUPT 
funktionierendes Beispiel schon mal recht.

(Den weiteren Schritt, mein spezifischer Fall auszuknobeln, sollte ich 
dann selber schaffen ...glaube ich zumindest!)



PS:
Die Wichtigkeit der Details zum Hinweis "...invalid version...real 
version... expected version" kann ich nicht einschaetzen.
Die genaue Bedeutung von Fehlercode 0x81a auch nicht.
1
$ lsb_release -a
2
LSB Version:  core-9.20170808ubuntu1-noarch:printing-9.20170808ubuntu1-noarch:security-9.20170808ubuntu1-noarch
3
Distributor ID:  Ubuntu
4
Description:  Ubuntu 18.04.3 LTS
5
Release:  18.04
6
Codename:  bionic
7
$ 
8
$ localc --version
9
LibreOffice 6.0.7.3 00m0(Build:3)
10
11
$

von Yalu X. (yalu) (Moderator)


Lesenswert?

So funktioniert es bei mir (LibreOffice 6.3.3.2.0+):
1
localc --convert-to "csv:Text - txt - csv (StarCalc):44,34,76" data.xlsx

Die dafür benötigten Informationen habe ich hier gefunden:

  https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options

: Bearbeitet durch Moderator
von earbsenzaehler (Gast)


Lesenswert?

Yalu X. schrieb:
> So funktioniert es bei mir (LibreOffice 6.3.3.2.0+):
>
>
1
> localc --convert-to "csv:Text - txt - csv (StarCalc):44,34,76" data.xlsx
2
>
>
> Die dafür benötigten Informationen habe ich hier gefunden:
>
> 
https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options


Wunderbar, Danke!  Das funzt bei mir genau so.


Interessant finde ich dass "csv" UND "Text - txt - csv (StarCalc)" 
anzugeben sind. DA drauf waere ich nicht gekommen weil ich es als 
redundant empfinde.

Sowohl auf der verlinkten Seite (die gab ich auch schon an) wie in der 
man-page zu localc ist gar kein Beispiel mit 2x ':' zu finden.
--> auf sowas waere ich noch lange nicht gekommen...


Es gibt ja bereits jahrealte BugReports zu soffice/ooffice/loffice, 
welche bemaengeln dass eine Liste an gueltigen Werte fuer 
"output_filter_name" gar nicht abzurufen ist. Entspr. auch vollstaendige 
Beispiele f. mehr als "Trivialfaelle".

von earbsenzaehler (Gast)


Lesenswert?

Interessant auch der Satz: "This filter accepts an option string 
containing five to nine tokens[...]"
Es reichen offensichtlich auch nur deren 3 (!)

Namentlich "Field Separator (1)" "Text Delimiter (2)" "Character Set 
(3)".

x x x x x


Wenn ich nun einen Schritt weiter gehe mit einem weiteren Token fuer 
"Number of First Line (4)", bekomme ich bloss eine Ergebnisdatei mit 
gleich vielen Zeilen.
Den Einfluss den ich festellen kann betrifft dann das Quoting...
1
$ localc --convert-to "csv:Text - txt - csv (StarCalc):44,34,76" data.xlsx
2
3
vs.
4
5
$ localc --convert-to "csv:Text - txt - csv (StarCalc):44,34,76,6" data.xlsx

von Yalu X. (yalu) (Moderator)


Lesenswert?

earbsenzaehler schrieb:
> Interessant finde ich dass "csv" UND "Text - txt - csv (StarCalc)"
> anzugeben sind. DA drauf waere ich nicht gekommen weil ich es als
> redundant empfinde.

Das erste ist die gewünschte Dateiendung, das zweite der Name des zu
verwendenden Filters. Gibt man den Filternamen explizit an, ist die
Dateiendung beliebig. Wenn man den Filternamen weglässt, wird er
implizit aus der Dateiendung ermittelt, weswegen diese dann nicht mehr
beliebig ist. Die Filternamen sind natürlich maximal unintuitiv.

> Sowohl auf der verlinkten Seite (die gab ich auch schon an) ...

Stimmt, das habe ich völlig übersehen :)

> ... wie in der man-page zu localc ist gar kein Beispiel mit 2x ':' zu
> finden. --> auf sowas waere ich noch lange nicht gekommen...

Ich glaube, ein Beispiel für die Syntax

  <Dateiendung>:<Filtername>:<Optionen>

habe ich auf irgendeiner anderen Webseite gefunden, an die ich mich aber
nicht mehr erinnere.

earbsenzaehler schrieb:
> Wenn ich nun einen Schritt weiter gehe mit einem weiteren Token fuer
> "Number of First Line (4)", bekomme ich bloss eine Ergebnisdatei mit
> gleich vielen Zeilen.
> Den Einfluss den ich festellen kann betrifft dann das Quoting...

Das habe ich auch nicht ganz verstanden, weswegen ich geschaut habe, ob
man diesen Teil nicht einfach weglassen kann :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.