1

我实际上是在使用 php 脚本来导入.ods文件并将其转换为.csv以便添加,最后将所有内容添加到 SQL 表中,但是当我上传多个工作表ods文件时,它只转换第一个工作表。

要转换它,我使用命令(为了便于阅读,分成两行):

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

我如何处理其他工作表?

4

1 回答 1

0

我遇到了同样的问题,我是这样解决的:

这里的答案作为参考,我构建了这个 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 回答