PyUno操作Calc:如何导出单个工作表为CSV及获取文件名?
解决PyUno导出活动工作表为CSV及获取文件名问题
一、导出活动工作表为CSV
导出活动工作表为CSV,可通过LibreOffice UNO的文档存储接口实现,需指定CSV过滤参数并仅导出当前工作表。在你的脚本中添加以下逻辑:
import unohelper from com.sun.star.beans import PropertyValue def export_active_sheet_to_csv(model, output_path): # 将本地路径转换为UNO兼容的URL格式(Windows路径需写成file:///C:/xxx.csv) output_url = uno.systemPathToFileUrl(output_path) # 配置CSV导出属性 filter_props = [] # 指定CSV过滤器类型 prop = PropertyValue() prop.Name = "FilterName" prop.Value = "Text - txt - csv (StarCalc)" filter_props.append(prop) # 设定仅导出当前活动工作表 prop = PropertyValue() prop.Name = "Selection" prop.Value = model.CurrentController.ActiveSheet filter_props.append(prop) # 设置字符编码(可选,默认UTF-8) prop = PropertyValue() prop.Name = "CharacterSet" prop.Value = "UTF-8" filter_props.append(prop) # 设置字段分隔符(可选,默认逗号) prop = PropertyValue() prop.Name = "FieldSeparator" prop.Value = "," filter_props.append(prop) # 执行导出,第二个参数0表示覆盖已有文件 model.storeToURL(output_url, tuple(filter_props)) # 调用导出函数,替换为你的目标路径 export_active_sheet_to_csv(model, "/path/to/your/target.csv")
二、获取已打开文件的名称
通过文档模型的两个方法可获取文件信息:
getURL():返回文件的完整路径URL(格式如file:///path/to/your/file.xlsx),可通过uno.fileUrlToSystemPath()转换为本地系统路径getTitle():直接返回不含路径的文件名(如file.xlsx)
添加以下代码即可获取:
# 获取完整本地文件路径 file_url = model.getURL() local_file_path = uno.fileUrlToSystemPath(file_url) print(f"完整文件路径:{local_file_path}") # 获取仅文件名(不含路径) file_name = model.getTitle() print(f"文件名:{file_name}")
注意:若文件未保存过,getURL()会返回空字符串,getTitle()则显示默认名称(如Untitled 1)。
内容的提问来源于stack exchange,提问作者fudo
相关产品推荐
相关产品推荐

