使用python将txt转换为xlsx时出错 [英] Error in converting txt to xlsx using python
问题描述
我的代码正在关注.
import csv
import openpyxl
import sys
def convert(input_path, output_path):
"""
Read a csv file (with no quoting), and save its contents in an excel file.
"""
wb = openpyxl.Workbook()
ws = wb.worksheets[0]
with open(input_path) as f:
reader = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
for row_index, row in enumerate(reader):
for col_index, value in enumerate(row):
ws.cell(row=row_index, column=col_index).value = value
wb.save(output_path)
def main():
try:
input_path, output_path = sys.argv[1:]
except ValueError:
print 'Usage: python %s input_path output_path' % (sys.argv[0],)
else:
convert(input_path, output_path)
if __name__ == '__main__':
main()
但是我遇到了这个错误.
But I got this error.
Traceback (most recent call last):
File "txt2xlsx.py", line 33, in <module>
main()
File "txt2xlsx.py", line 29, in main
convert(input_path, output_path)
File "txt2xlsx.py", line 18, in convert
ws.cell(row=row_index, column=col_index).value = value
File "C:\python27\lib\site-packages\openpyxl\worksheet\worksheet.py", line 350, in cell
column = get_column_letter(column)
File "C:\python27\lib\site-packages\openpyxl\utils\__init__.py", line 100, in get_column_letter
raise ValueError("Invalid column index {0}".format(idx))
ValueError: Invalid column index 0
我认为我已经正确安装了openpyxl.
I think I have installed openpyxl correctly.
我还记得我以前没有任何问题地使用过该程序.我最近购买了一台新计算机,所以这可能是PC配置问题.但是我不知道.
And I remember I was using this program without any problem before. I recently bought a new computer so maybe this is a PC configuration issue.. But I can't figure out.
推荐答案
似乎您正在使用 openpyxl 2.0.0 + ,这是根据
Seems like you are using openpyxl 2.0.0 + ,according to changelog for Openpyxl 2.0.0 -
以1索引引用单元格:A1 == cell(row = 1,column = 1)
Cells are referenced with 1-indexing: A1 == cell(row=1, column=1)
行和列的索引从1开始.因此,您还应该使enumerate()
函数也从1开始.示例-
The rows and columns index start at 1. So you should make your enumerate()
function start at 1 as well. Example -
for row_index, row in enumerate(reader, 1):
for col_index, value in enumerate(row, 1):
ws.cell(row=row_index, column=col_index).value = value
您的特定代码将在低于2.0.0的openpyxl版本中运行,但由于上述2.0.0版本中的上述更改而失败.
Your particular code would work in openpyxl version less than 2.0.0 , it fails because of the above mentioned change in version 2.0.0 .
这篇关于使用python将txt转换为xlsx时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!