LibreOffice Calc 宏将命名工作表保存在 csv 文件中
Posted
技术标签:
【中文标题】LibreOffice Calc 宏将命名工作表保存在 csv 文件中【英文标题】:LibreOffice Calc macro to save a named sheet in a csv file 【发布时间】:2020-07-01 16:25:15 【问题描述】:有一个名为“Data.ods”的 Calc 文件和一个名为“DataSheet”的工作表,应使用 tab 作为字段分隔符和双引号数据字段将其保存在当前目录的“Data.csv”文件中.如何在 LO Basic 宏中实现这一点?
【问题讨论】:
【参考方案1】:您尚未指定宏是否应打开“Data.ods”电子表格或是否已打开。此代码适用于当前电子表格:
Sub Generate_CSV()
Dim sURL As String ' URL of current spreadsheet
Dim FileN As String ' URL of target CSV-file
Dim oCurrentController As Object ' Before save - activate sheet sSheetName
Dim storeParms(2) as new com.sun.star.beans.PropertyValue
Const sSheetName = "DataSheet"
GlobalScope.BasicLibraries.LoadLibrary("Tools") ' Only for GetFileName
sURL = thisComponent.getURL()
If Not thisComponent.getSheets().hasByName(sSheetName) Then
MsgBox ("Sheet """ & sSheetName & """ Not Found In Current Spreadsheet")
Exit Sub
EndIf
FileN = GetFileNameWithoutExtension(sURL) & ".csv" ' For Data.ods it will be Data.csv
REM Options to StoreTo:
storeParms(0).Name = "FilterName"
storeParms(0).Value = "Text - txt - csv (StarCalc)"
storeParms(1).Name = "FilterOptions"
storeParms(1).Value = "9,34,,65535,1,,0,true,true,true"
REM About this string see https://wiki.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options
storeParms(2).Name = "Overwrite"
storeParms(2).Value = True
REM Activate sheet for export - select "DataSheet"
thisComponent.getCurrentController().setActiveSheet(thisComponent.getSheets().getByName(sSheetName))
REM storeToURL can raises com.sun.star.io.IOException! Only now:
On Error GoTo Errorhandle
REM Export
thisComponent.storeToURL(FileN,storeParms())
MsgBox ("No Error Found,Upload file is saved : """ + ConvertFromUrl(FileN) + """.")
Exit Sub
Errorhandle:
MsgBox ("Modifications Are Not Saved,Upload File Not Generated" & chr(13) _
& "May be table " & ConvertFromUrl(FileN) & " is open in another window?")
Exit Sub
Resume
End Sub
(发布于 2011 年 11 月 18 日 there)
【讨论】:
以上是关于LibreOffice Calc 宏将命名工作表保存在 csv 文件中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 libreoffice writer 中使用 python 宏将文本插入斜体或粗体等
如何使用 LibreOffice 宏将 os.system() 命令写入 python 脚本并执行它?
如何从 Libreoffice Calc 工作簿的所有工作表中删除所有图像
正则表达式匹配单元格公式,其中工作表名称与 LibreOffice Calc 中的 uderscore aka Sheet1_2