xlwings 是否可以将文件保存为 csv?
xlwings is it possible to save file as csv?
我现在已经搜索这个答案大约 2 个小时了。
是否可以将新创建的工作簿保存为 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 ??但我不知道该怎么做:(
我认为它目前不受支持,因为我在 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)
您可以使用类似这样的东西,但它有点混乱 - 当您 运行 这段代码时,将弹出一个 Excel 的实例。
此外,据我所知,它 OS 特定于 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)
我现在已经搜索这个答案大约 2 个小时了。
是否可以将新创建的工作簿保存为 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 ??但我不知道该怎么做:(
我认为它目前不受支持,因为我在 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)
您可以使用类似这样的东西,但它有点混乱 - 当您 运行 这段代码时,将弹出一个 Excel 的实例。
此外,据我所知,它 OS 特定于 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)