前言
excel 后綴有2種格式, .xls 是從 Excel 97 到 Excel 2003 的默認(rèn)文件格式,而 .xlsx 是 Excel 2007 及更高版本的默認(rèn)文件格式。
.xlsx和.xls格式的主要區(qū)別在于,.xls格式單個(gè)工作表最多支持65536行,256列。
.xlsx格式最多支持1048576行,16384列。
此外就是,存儲同樣多的數(shù)據(jù),.xlsx格式文件更小。基本就這兩點(diǎn)區(qū)別。
處理excel
python 可以使用xlrd,xlrwt,openpyxl,xlwings,pandas 等庫操作 Excel 。
環(huán)境安裝
文檔操作
性能對比
參考鏈接Python殺死Excel?眾多模塊哪家強(qiáng)
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 轉(zhuǎn)成 .xlsx格式。
from openpyxl import Workbook
import datetime
def csv_to_xlsx_pd(sourcePath:str,savePath:str,encode='utf-8'):
"""將csv 轉(zhuǎn)為 excel(.xlsx格式)
如果不需要可以把計(jì)時(shí)相關(guān)代碼刪除
Args:
sourcePath:str 來源文件路徑
savePath:str 保存文件路徑,需要包含保存的文件名,文件名需要是 xlsx 格式的
encode='utf-8' 默認(rèn)編碼,可以改為需要的編碼如gbk
"""
print('開始處理%s' % sourcePath)
curr_time = datetime.datetime.now()
print(curr_time)
f = open(sourcePath, 'r', encoding=encode)
# 創(chuàng)建一個(gè)workbook 設(shè)置編碼
workbook = Workbook()
# 創(chuàng)建一個(gè)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')
數(shù)據(jù)量小于1w操作會(huì)比較快,數(shù)據(jù)量大于50w, workbook.save()
保持?jǐn)?shù)據(jù)會(huì)很慢,有時(shí)候需要20-30分鐘才能保存完成。
使用 pandas 轉(zhuǎn)d
使用 pandas 將csv 轉(zhuǎn)xlsx文章來源:http://www.zghlxwxcb.cn/news/detail-477355.html
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')
if __name__ == '__main__':
csv_to_xlsx_pd()
數(shù)據(jù)量小于1w操作會(huì)比較快,數(shù)據(jù)量大于50w,保存會(huì)很慢。文章來源地址http://www.zghlxwxcb.cn/news/detail-477355.html
到了這里,關(guān)于python 將 csv轉(zhuǎn)excel (.xls和.xlsx)的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!