翼度科技»论坛 编程开发 python 查看内容

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

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
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 后缀的文件
  1. import xlwt
  2. def csv_xls(filename, xlsname):
  3.     f = open(filename, 'r', encoding='utf-8')
  4.     xls = xlwt.Workbook()
  5.     sheet = xls.add_sheet('sheet1', cell_overwrite_ok=True)
  6.     x = 0
  7.     for line in f:
  8.         for i in range(len(line.split(','))):
  9.             print(i)
  10.             item = line.split(',')[i]
  11.             sheet.write(x, i, item)
  12.         x += 1
  13.     f.close()
  14.     xls.save(xlsname)
  15. if __name__ == "__main__":
  16.     filename = "test1.csv"
  17.     xlsname ="res1.xls"
  18.     csv_xls(filename,xlsname)
复制代码
xlwt 库仅支持.xls 后缀,不支持.xlsx 后缀的excel 文件
openpyxl 操作

使用openpyxl 库将 csv 转成 .xlsx格式。
  1. from openpyxl import Workbook
  2. import datetime
  3. def csv_to_xlsx_pd(sourcePath:str,savePath:str,encode='utf-8'):
  4.     """将csv 转为 excel(.xlsx格式)
  5.     如果不需要可以把计时相关代码删除
  6.     Args:
  7.         sourcePath:str 来源文件路径
  8.         savePath:str 保存文件路径,需要包含保存的文件名,文件名需要是 xlsx 格式的
  9.         encode='utf-8' 默认编码,可以改为需要的编码如gbk
  10.     """
  11.     print('开始处理%s' % sourcePath)
  12.     curr_time = datetime.datetime.now()
  13.     print(curr_time)
  14.     f = open(sourcePath, 'r', encoding=encode)
  15.     # 创建一个workbook 设置编码
  16.     workbook = Workbook()
  17.     # 创建一个worksheet
  18.     worksheet = workbook.active
  19.     workbook.title = 'sheet'
  20.     for line in f:
  21.         row = line.split(',')
  22.         worksheet.append(row)
  23.         # if row[0].endswith('00'):    # 每一百行打印一次
  24.         #     print(line, end="")
  25.     workbook.save(savePath)
  26.     print('处理完毕')
  27.     curr_time2 = datetime.datetime.now()
  28.     print(curr_time2-curr_time)
  29. if __name__ == '__main__':
  30.     source = 'source.csv'
  31.     save = 'result.xlsx'
  32.     csv_to_xlsx_pd(sourcePath=source, savePath=save, encode='utf-8')
复制代码
数据量小于1w操作会比较快,数据量大于50w, workbook.save() 保持数据会很慢,有时候需要20-30分钟才能保存完成。
使用 pandas 转d

使用 pandas 将csv 转xlsx
  1. import pandas as pd
  2. def csv_to_xlsx_pd():
  3.     csv = pd.read_csv('source.csv', encoding='utf-8')
  4.     csv.to_excel('result.xlsx', sheet_name='data')
  5. #学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
  6. if __name__ == '__main__':
  7.     csv_to_xlsx_pd()
复制代码
数据量小于1w操作会比较快,数据量大于50w,保存会很慢。

来源:https://www.cnblogs.com/xxpythonxx/p/17897145.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具