我现在正在寻找这个答案大约两个小时。
是否可以将新创建的工作簿保存为 csv 或 csv-utf8 文件???
我知道如何将其另存为 xlsx xlsm 等,但 csv 似乎不起作用。
保存以下部分代码:
wb = xw.Book()
wb.sheets.add('Ceny')
wb.sheets['Ceny'].range('A1').options(index=False, header=False).value = mainDF
wb.save(r'D:\mainDF.csv')
wb.app.quit()
我收到错误:
file_format = ext_to_file_format[target_ext]
KeyError: '.csv'
我读到我应该指定文件格式并且可能使用 saveas ?但我不知道该怎么做:(
您可以使用类似的东西,但它有点混乱 - 当您运行此代码时,会弹出一个 Excel 实例。
此外,据我所知,它是特定于 Windows 的操作系统。
import pandas as pd
import xlwings as xw
from xlwings.constants import FileFormat
mainDF = pd.DataFrame({'Field1':[1,2,3,4], 'Field2':['a', 'b', 'c', 'd']})
with xw.App() as app:
wb = app.books.add()
wb.sheets.add('Ceny')
wb.sheets['Ceny'].range('A1').options(index=False, header=False).value = mainDF
wb.api.SaveAs(r'C:\Test\PythonExamples\mainDF.csv', FileFormat:=FileFormat.xlCSV)
我认为目前不支持它,因为我在 macOS 上实现时遇到了一些问题。不过,有效的方法是使用 Python 工具来完成此操作,如下所示:
import xlwings as xw
import csv
sheet = xw.books.active.sheets.active
with open('mycsv.csv', 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerows(sheet.used_range.value)
似乎没有直接的方法将工作表另存为 csv 文件。 其他迭代范围内每一行的方法太慢或不稳定。 如果我们使用剪贴板,该过程会快速且可靠。
#dependency
import pyperclip
import xlwings as xw
wb = xw.Book(filename)
sht=wb["sheetname"]
#copy selected data to clipboard first
real_range = sht["A1"].expand()
real_range.clear_formats()
real_range.select()
real_range.copy()
#use clipboard data
csv_data = pyperclip.paste()
with open(OutputCsvFile, 'w') as file:
csv_writer = csv.writer(file, delimiter=",")
for row in csv_data.split("\n"):
csv_writer.writerow(row.split("\t"))
print("%s output successfully!\n" % OutputCsvFile)