python将txt文件转为excel格式以及写入excel超过65536行报错问题解决方法

参考链接:

https://blog.csdn.net/levy_cui/article/details/82252183

https://blog.csdn.net/levy_cui/article/details/86590614

将txt文件转换为Excel格式的xls文件或者xlsx文件,需要用到xlwt模块写入。

Excel文件的读取(xlrd)和写入模块(xlwt)可参考:https://www.cnblogs.com/hedeyong/p/7646125.html

下面用Python将txt文件转为xls文件,txt2xls.py 代码如下:

#!/bin/env python
# -*- encoding: utf-8 -*-
#-------------------------------------------------------------------------------
# Purpose:     txt转换成xls
# use: python txt2xls.py filename xlsname
#-------------------------------------------------------------------------------
import datetime
import time
import os
import sys
import xlwt #需要的模块
 
def txt2xls(filename,xlsname):  #文本转换成xls的函数,filename 表示一个要被转换的txt文本,xlsname 表示转换后的文件名
    if os.path.exists(filename):
        print('Converting xls ... ')
    f = open(filename, 'r', encode='UTF-8')   #打开txt文本进行读取
    x = 0                #在excel开始写的位置(y)
    y = 0                #在excel开始写的位置(x)
    xls=xlwt.Workbook()
    sheet = xls.add_sheet('sheet1',cell_overwrite_ok=True) #生成excel的方法,声明excel
    while True:  #循环,读取文本里面的所有内容
        line = f.readline() #一行一行读取
        if not line:  #如果没有内容,则退出循环
            break
        for i in line.split('\t'):#读取出相应的内容写到x
            item=i.strip()
            sheet.write(x,y,item)
            y += 1 #另起一列
        x += 1 #另起一行
        y = 0  #初始成第一列
    f.close()
    xls.save(xlsname+'.xls') #保存
 
if __name__ == "__main__":
    filename = sys.argv[1]
    xlsname  = sys.argv[2]
    txt2xls(filename,xlsname)
    print('Our task has been completed!')

然而,使用xlwd模块写入xls文件,当文件写入超过65536行的时候就会报错,无法转换成功。改用openpyxl这个模块写入xls可以解决这个问题。(当数据行超过一定数量,xls文件是存不下的。显然无法满足我们的大量数据存储需求,这个时候需要改用xlsx。xlsx文件最大行数是1048576行,而xlsx文件则用到了openpyxl模块来进行读入和写入。)

1、导入openpyxl模块:pip install openpyxl

2、txt2xls.py代码中需要修改的地方包括:get_sheet_by_name,sheet.cell(row=x,column=y,value=item), xls.save

修改后代码如下:

#!/bin/env python
# -*- encoding: utf-8 -*-
#-------------------------------------------------------------------------------
# Purpose:     txt转换成xlsx
# use: python txt2xlsx.py filename xlsxname
#-------------------------------------------------------------------------------
import datetime
import time
import os
import sys
#import xlwt 
import openpyxl #需要的模块
 
 
def txt2xls(filename,xlsxname):  #文本转换成xls的函数,filename 表示一个要被转换的txt文本,xlsname 表示转换后的文件名
    if os.path.exists(filename):
        print('Converting xlsx ... ')
    f = open(filename, 'r', encode='UTF-8')   #打开txt文本进行读取
    x = 1                #在excel开始写的位置(y)
    y = 1                #在excel开始写的位置(x)
    xls=openpyxl.Workbook()
    sheet = xls.get_sheet_by_name('Sheet') 
    while True:  #循环,读取文本里面的所有内容
        line = f.readline() #一行一行读取
        if not line:  #如果没有内容,则退出循环
            break
        for i in line.split('\t'):#读取出相应的内容写到x
            item=i.strip()
            sheet.cell(row=x,column=y,value=item)
            y += 1 #另起一列
        x += 1 #另起一行
        y = 1  #初始成第一列
    f.close()
    xls.save(xlsname+'.xlsx') #保存
 
if __name__ == "__main__":
    filename = sys.argv[1]
    xlsname  = sys.argv[2]
    txt2xls(filename,xlsname)
    print('Our task has been completed!')

猜你喜欢

转载自blog.csdn.net/weixin_39506322/article/details/89682794
今日推荐