首页 > 编程语言 >用python将csv转excel (.xls和.xlsx)的几种方式

用python将csv转excel (.xls和.xlsx)的几种方式

时间:2023-12-12 16:25:32浏览次数:35  
标签:__ xlsx python excel print csv xls

excel 后缀有2种格式, .xls 是从 Excel 97 到 Excel 2003 的默认文件格式,而 .xlsx 是 Excel 2007 及更高版本的默认文件格式。
.xlsx和.xls格式的主要区别在于,.xls格式单个工作表最多支持65536行,256列。
.xlsx格式最多支持1048576行,16384列。
此外就是,存储同样多的数据,.xlsx格式文件更小。基本就这两点区别。

处理excel

python 可以使用xlrd,xlrwt,openpyxl,xlwings,pandas 等库操作 Excel 。

xlwt 操作

使用xlwt 操作 excel, 保存 .xls 后缀的文件

import xlwt


def csv_xls(filename, xlsname):
    f = open(filename, 'r', encoding='utf-8')
    xls = xlwt.Workbook()
    sheet = xls.add_sheet('sheet1', cell_overwrite_ok=True)
    x = 0
    for line in f:

        for i in range(len(line.split(','))):
            print(i)
            item = line.split(',')[i]
            sheet.write(x, i, item)
        x += 1
    f.close()
    xls.save(xlsname)


if __name__ == "__main__":
    filename = "test1.csv"
    xlsname ="res1.xls"
    csv_xls(filename,xlsname)

xlwt 库仅支持.xls 后缀,不支持.xlsx 后缀的excel 文件

openpyxl 操作

使用openpyxl 库将 csv 转成 .xlsx格式。

from openpyxl import Workbook
import datetime


def csv_to_xlsx_pd(sourcePath:str,savePath:str,encode='utf-8'):
    """将csv 转为 excel(.xlsx格式)
    如果不需要可以把计时相关代码删除
    Args:
        sourcePath:str 来源文件路径
        savePath:str 保存文件路径,需要包含保存的文件名,文件名需要是 xlsx 格式的
        encode='utf-8' 默认编码,可以改为需要的编码如gbk
    """
    print('开始处理%s' % sourcePath)
    curr_time = datetime.datetime.now()
    print(curr_time)

    f = open(sourcePath, 'r', encoding=encode)
    # 创建一个workbook 设置编码
    workbook = Workbook()
    # 创建一个worksheet
    worksheet = workbook.active
    workbook.title = 'sheet'

    for line in f:
        row = line.split(',')
        worksheet.append(row)
        # if row[0].endswith('00'):    # 每一百行打印一次
        #     print(line, end="")

    workbook.save(savePath)
    print('处理完毕')
    curr_time2 = datetime.datetime.now()
    print(curr_time2-curr_time)


if __name__ == '__main__':
    source = 'source.csv'
    save = 'result.xlsx'
    csv_to_xlsx_pd(sourcePath=source, savePath=save, encode='utf-8')

数据量小于1w操作会比较快,数据量大于50w, workbook.save() 保持数据会很慢,有时候需要20-30分钟才能保存完成。

使用 pandas 转d

使用 pandas 将csv 转xlsx

import pandas as pd


def csv_to_xlsx_pd():
    csv = pd.read_csv('source.csv', encoding='utf-8')
    csv.to_excel('result.xlsx', sheet_name='data')

#学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
if __name__ == '__main__':
    csv_to_xlsx_pd()

数据量小于1w操作会比较快,数据量大于50w,保存会很慢。

标签:__,xlsx,python,excel,print,csv,xls
From: https://www.cnblogs.com/xxpythonxx/p/17897145.html

相关文章

  • python中x[:] x[::]用法总结
    X[:,0]#二维数组取第1维所有数据X[:,1]#第2列X[0,:]#第1行X[3,:]#第三行X[1:4,:]#第一二三行总结一下:无论是左边还是右边逗号都要靠近冒号:如果冒号:的左边或者右边还有冒号,这时候就说明其中一个冒号代表的是范围(eg:1:5从1到4)如果冒号:左边或者右边没有任何东西,那么这......
  • Python中json.load()和json.loads()的区别
    一、图解json.loads():解析一个有效的JSON字符串并将其转换为Python字典json.load():从一个文件读取JSON类型的数据,然后转转换成Python字典二、json.loads()用法1、例子importjsondata={"name":"Satyamkumar","place":"patna","skills":["Raspber......
  • python cv2.imread 读取中文路径的图片返回为None的问题
    使用cv2读取图片时,输出图片形状大小时出现报错“'NoneType'objecthasnoattributeshape”,后来排查发现读取图片的返回值image为None,这就说明图片根本就没有被读取。下面图片是问题问题解决后,为了更好的展示,写的代码展示,这是正常的因果关系,找错误排查时是从下往上推。 ......
  • python将资源打包进exe
    前言之前py打包的exe一直是不涉及图片等资源的,直到我引入图片后打包,再双击exe发现直接提示未找到资源。分析我py代码中的图片引入使用的是项目相对路径,打包时pyinstaller只会引入py模块,这种路径引入的资源其实是不会打包进exe的。有人想的是可以直接将资源放到exe旁边,但这不是......
  • MinGW编译Python至pyd踩坑整理
    注意需要魔法用scoop自动安装配置MinGw需要魔法,不需要手动配置mingwscoopinstallmingw安装Cython,Setuptools第三方库关闭魔法,使用清华源pipinstallsetuptools-ihttps://pypi.tuna.tsinghua.edu.cn/simplepipinstallcython-ihttps://pypi.tuna.tsinghua.edu.cn/s......
  • [-007-]-Python3+Unittest+Selenium Web UI自动化测试之@property装饰器默认值设置
    看示例:#!/usr/bin/python3#coding:utf-8__author__='csjin'#定义@property装饰器classPPTListModels(object):def__init__(self):self._tab_name="PPT模板"@propertydefhandle(self):returnself.__handle......
  • The Zen of Python
    TheZenofPythonTheZenofPython,byTimPetersBeautifulisbetterthanugly.Explicitisbetterthanimplicit.Simpleisbetterthancomplex.Complexisbetterthancomplicated.Flatisbetterthannested.Sparseisbetterthandense.Readabilitycou......
  • CentOS7.6安装python3.6.8一把成
    yum-yinstallvimunzipnet-tools&&yum-yinstallwget&&yum-yinstallbzip2&&yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel......
  • 【python基础之装饰器】---装饰器
    title:【python基础之装饰器】---装饰器date:2023-12-1118:54:06updated:2023-12-1214:30:00description:cover:https://home.cnblogs.com/u/dream-ze/【一】什么是装饰器装饰代指为被装饰对象添加新的功能,器代指器具/工具,装饰器与被装饰的对象均可......
  • 【python基础之函数对象和闭包】 --- 函数对象与闭包
    title:【python基础之函数对象和闭包】---函数对象与闭包date:2023-12-1119:20:00updated:2023-12-1119:20:00description:cover:https://home.cnblogs.com/u/dream-ze/【一】函数对象函数对象指的是函数可以被当做数据来处理具体可以分为四......