使用 xlsxwriter ByteIO 对象写入 CSV 文件
Write CSV file using xlsxwriter ByteIO object
我正在使用 xlsxwriter ByteIO 对象创建一个 .xlsx 文件,我想使用相同的对象创建 .CSV 文件。可能吗?
这是我的代码:
outputStr=BytesIO()
workbook = xlsxwriter.Workbook(outputStr,{'in_memory': True})
worksheet = workbook.add_worksheet()
# Some data we want to write to the worksheet.
row = 0
col = 0
expenses=(['OriginalURL','NormalizedURL','Response','DuplicateOf','SourceId', 'RelatedSources'],)
for OriginalURL,NormalizedURL,Response,DuplicateOf,SourceId,RelatedSources in (expenses):
worksheet.write(row, col, OriginalURL)
worksheet.write(row, col+1, NormalizedURL)
worksheet.write(row, col+2, Response)
worksheet.write(row, col+3, DuplicateOf)
worksheet.write(row, col+4, SourceId)
worksheet.write(row, col+5, RelatedSources)
row += 1
workbook.close()
不存储文件,使用 "outputStr" 对象我在 JIRA 云中附加“.xlsx”文件。
这是 Jira 代码(使用 .xlsx 文件):
thisJira.add_attachment(issue=new_issue, attachment=outputStr, filename='Result.xlsx')
我想附加具有相同结果的 CSV 文件(我用 .csv 尝试过相同的代码,但它不起作用):
thisJira.add_attachment(issue=new_issue, attachment=outputStr, filename='CopyResult.csv')
我在 CSV 文件中收到此错误:
"The file format and extension of ".xls" 不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开它。您是否仍要打开它?"
帮帮我!谢谢。
您可以使用内置的 csv
模块将 CSV 与 XLSX 文件一起编写,您只需要稍微不同地创建它:
import csv
import io
import xslxwriter
xlsx_data = io.BytesIO()
csv_data = io.StringIO() # on Python 2.x use `io.BytesIO()`
# XLSX part
workbook = xlsxwriter.Workbook(xlsx_data, {'in_memory': True})
worksheet = workbook.add_worksheet()
# CSV part
csv_writer = csv.writer(csv_data)
# Some data we want to write to the worksheet.
expenses=(['OriginalURL', 'NormalizedURL', 'Response', 'DuplicateOf',
'SourceId', 'RelatedSources'],)
for row, data in enumerate(expenses):
# XSLX part
worksheet.write_row(row, 0, data) # if needed, add an offset to the row/column
# CSV part
csv_writer.writerow(data)
workbook.close()
# CSV data available in csv_data, XLSX data available in xlsx_data
从你的问题中不清楚是否要同时创建它们 - 如果不是,只需删除 XLSX 部分(你可以直接 csv_writer.writerows(expenses)
,而无需迭代个别行)。
我正在使用 xlsxwriter ByteIO 对象创建一个 .xlsx 文件,我想使用相同的对象创建 .CSV 文件。可能吗?
这是我的代码:
outputStr=BytesIO()
workbook = xlsxwriter.Workbook(outputStr,{'in_memory': True})
worksheet = workbook.add_worksheet()
# Some data we want to write to the worksheet.
row = 0
col = 0
expenses=(['OriginalURL','NormalizedURL','Response','DuplicateOf','SourceId', 'RelatedSources'],)
for OriginalURL,NormalizedURL,Response,DuplicateOf,SourceId,RelatedSources in (expenses):
worksheet.write(row, col, OriginalURL)
worksheet.write(row, col+1, NormalizedURL)
worksheet.write(row, col+2, Response)
worksheet.write(row, col+3, DuplicateOf)
worksheet.write(row, col+4, SourceId)
worksheet.write(row, col+5, RelatedSources)
row += 1
workbook.close()
不存储文件,使用 "outputStr" 对象我在 JIRA 云中附加“.xlsx”文件。
这是 Jira 代码(使用 .xlsx 文件):
thisJira.add_attachment(issue=new_issue, attachment=outputStr, filename='Result.xlsx')
我想附加具有相同结果的 CSV 文件(我用 .csv 尝试过相同的代码,但它不起作用):
thisJira.add_attachment(issue=new_issue, attachment=outputStr, filename='CopyResult.csv')
我在 CSV 文件中收到此错误:
"The file format and extension of ".xls" 不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开它。您是否仍要打开它?"
帮帮我!谢谢。
您可以使用内置的 csv
模块将 CSV 与 XLSX 文件一起编写,您只需要稍微不同地创建它:
import csv
import io
import xslxwriter
xlsx_data = io.BytesIO()
csv_data = io.StringIO() # on Python 2.x use `io.BytesIO()`
# XLSX part
workbook = xlsxwriter.Workbook(xlsx_data, {'in_memory': True})
worksheet = workbook.add_worksheet()
# CSV part
csv_writer = csv.writer(csv_data)
# Some data we want to write to the worksheet.
expenses=(['OriginalURL', 'NormalizedURL', 'Response', 'DuplicateOf',
'SourceId', 'RelatedSources'],)
for row, data in enumerate(expenses):
# XSLX part
worksheet.write_row(row, 0, data) # if needed, add an offset to the row/column
# CSV part
csv_writer.writerow(data)
workbook.close()
# CSV data available in csv_data, XLSX data available in xlsx_data
从你的问题中不清楚是否要同时创建它们 - 如果不是,只需删除 XLSX 部分(你可以直接 csv_writer.writerows(expenses)
,而无需迭代个别行)。