python写入excel超过65536行报错问题解决方法

本文介绍了一种使用Python将大型TXT文件转换为XLSX格式的方法,解决了XLWT包在处理超过65536行数据时的限制。通过采用OPENPYXL包,实现了高效的数据转换,适用于大规模数据处理。
部署运行你感兴趣的模型镜像

接此篇文章:python将txt文件转为excel格式

上篇文章中将内容写到excel中使用import xlwt包,后来发现文件写入超过65536行的时候就会报错,无法转换成功,

xls后缀文件,只支持这么多行,在网上搜索一下,解决方法可以写多个sheet页,但不是我想要的方式,

后来后搜索了下,找到了openpyxl包,使用这个包写入数据,文件保存为xlsx格式的,就可以完美解决。

1、安装包pip install openpyxl

2、再将上篇文章代码(文章开头连接)修改如下,关键点:openpyxl,get_sheet_by_name,sheet.cell(row=x,column=y,value=item), xls.save

#!/bin/env python
# -*- encoding: utf-8 -*-
#-------------------------------------------------------------------------------
# Purpose:     txt转换成Excel
# use: python txt2excel.py out.txt ABC
#-------------------------------------------------------------------------------
import datetime
import time
import os
import sys
import xlwt #需要的模块
import openpyxl


def txt2xls(filename,xlsname):  #文本转换成xls的函数,filename 表示一个要被转换的txt文本,xlsname 表示转换后的文件名
    print('converting xlsx ... ')
    f = open(filename)   #打开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)

参考:
https://www.cnblogs.com/zeke-python-road/p/8986318.html
https://www.cnblogs.com/li--chao/p/4449502.html

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

倒数第二报错提示“Value 必须是字符向量”的原因通常是由于 `app.BTextArea.Value` 属性期望接收一个单一的字符向量,而你在尝试赋予它的值却是一个元胞数组或不符合预期的数据类型。为了修复这个问题,你需要确保传递给 `Value` 属性的是正确的数据格式。 以下是几种解决问题方法: ### 方法一:拼接所有成为一个大的字符向量 你可以将所有的字符串按照连接起来形成一个大的字符向量,并在其间插入换符 `\n` 来分隔各内容。修改后的代码如下所示: ```matlab % 创建一个空字符串用于存储最终结果 result_str = ''; % 遍历每一并将它们合并到 result_str 中 for i = 1:a row_str = strtrim(num2str(app.B(i,:))); % 转换成字符串并去除多余空白 result_str = [result_str, row_str, '\n']; % 添加新一并在末尾加上换符 end % 移除最后一个多余的换符 (如果有必要) if ~isempty(result_str) result_str(end) = []; end % 设置文本区域的 Value 属性为新的字符向量 app.BTextArea.Value = result_str; ``` 这种方法会将整个矩阵的所有组合成一个单独的大字符串,适合一次性展示全部内容的情景下使用。 ### 方法二:检查控件属性是否支持多文本 有些 UI 控件可能会有不同的属性名来接受多文本。例如,某些 MATLAB App Designer 组件可能拥有如 `Text` 或者 `String` 属性代替 `Value` 并且允许直接传入字符串数组或多维字符数组。如果是这样的话,则可以考虑调整你的代码以匹配具体的控件需求。 假设你的 `BTextArea` 支持 `Lines` 属性(这是一个假定的例子),那么可以直接赋值一个多字符串: ```matlab app.BTextArea.Lines = B_show; % 如果 Lines 属性存在并且适用于该控件的话 ``` 当然,在实际应用中需要查看官方文档确认目标控件的具体为。 ### 方法三:改用uitable或其他适当的显示方式 如果你发现现有的控件难以满足要求,还可以考虑采用其他更适合展现表格型数据的方式,比如 `uitable` 控件等,这类控件通常对二维表单有更好的支持。 选择哪种解决方案取决于具体情况和个人偏好,但从最简单实用的角度出发,**方法一是最容易实施也较为推荐的选择**。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值