1

私は実際にphpスクリプトを使用して.odsファイルをインポートし.csv、最終的にすべてをSQLテーブルに追加するために変換していますが、複数のシートodsファイルをアップロードすると、最初のシートのみが変換されます。

それを変換するには、次のコマンドを使用します (読みやすくするために 2 行に分けています)。

$ libreoffice4.2 --headless --invisible \
                 --convert-to csv /tmp/test.ods --outdir /tmp/

他のシートも同様に処理するにはどうすればよいですか?

4

1 に答える 1

0

私は同じ問題を思いついた、これが私がそれを解決した方法です:

hereの回答を参照して、この libreoffice ベーススクリプトを作成しました。

REM  *****  BASIC  *****

Sub convertSheetsToCSVs
Dim fileProps(1) as new com.sun.star.beans.PropertyValue
sheets = ThisComponent.Sheets

fileProps(0).Name = "FilterName"
fileProps(0).Value = "Text - txt - csv (StarCalc)"
fileProps(1).Name = "FilterOptions"
fileProps(1).Value = "09,,22,1,,0,false,true"

'The previous line can be changed to modify filter options as explained in 
'https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options#Filter_Options_for_the_CSV_Filter

folder = "file:///home/your_folder_path/"
i = 0

Do While sheets.Count > i
  sheet = sheets.getByIndex(i)
  cntrllr = ThisComponent.CurrentController
  cntrllr.setActiveSheet(sheet)
  sURL = folder & sheets.ElementNames(i) & ".csv"
  ThisComponent.storeToURL(sURL, fileProps())
  i = i + 1
Loop
End Sub

コンソールでやりたい場合は、確かに方法がありますが、方法がわかりません。

于 2016-08-11T10:56:35.773 に答える