小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python讀寫EXCEL文件常用方法大全

 wenxuefeng360 2022-07-02 發(fā)布于四川

前言

python讀寫excel的方式有很多,不同的模塊在讀寫的講法上稍有區(qū)別,這里我主要介紹幾個(gè)常用的方式。

數(shù)據(jù)準(zhǔn)備

為了方便演示,我這里新建了一個(gè)data.xls和data.xlsx文件,第一個(gè)工作表sheet1區(qū)域“A1:E5”的內(nèi)容如下,用于測(cè)試讀寫excel的代碼:

xlrd和xlwt

xlrd是一個(gè)庫(kù),用于從Excel文件中以.xls格式讀取數(shù)據(jù)和格式化信息
xlwt是一個(gè)庫(kù),用于將數(shù)據(jù)和格式化信息寫入較舊的Excel文件(例如:.xls)。

示例

pip install xlrd
pip install xlwt


我們開始來(lái)讀取文件的內(nèi)容

import xlrd
import os

file_path = os.path.dirname(os.path.abspath(__file__))
base_path = os.path.join(file_path, 'data.xlsx')
book = xlrd.open_workbook(base_path)
sheet1 = book.sheets()[0]
nrows = sheet1.nrows
print('表格總行數(shù)', nrows)
ncols = sheet1.ncols
print('表格總列數(shù)', ncols)
row3_values = sheet1.row_values(2)
print('第3行值', row3_values)
col3_values = sheet1.col_values(2)
print('第3列值', col3_values)
cell_3_3 = sheet1.cell(2, 2).value
print('第3行第3列的單元格的值:', cell_3_3)


接下來(lái)我們來(lái)進(jìn)行寫入,寫入可以進(jìn)行的操作太多了,我這里只列舉了常用的的操作。

import xlwt
import datetime
# 創(chuàng)建一個(gè)workbook 設(shè)置編碼
workbook = xlwt.Workbook(encoding='utf-8')
# 創(chuàng)建一個(gè)worksheet
worksheet = workbook.add_sheet('Worksheet')
# 寫入excel參數(shù)對(duì)應(yīng) 行, 列, 值
worksheet.write(0, 0, label='測(cè)試')
# 設(shè)置單元格寬度
worksheet.col(0).width = 3333

# 設(shè)置單元格高度
tall_style = xlwt.easyxf('font:height 520;')
worksheet.row(0).set_style(tall_style)

# 設(shè)置對(duì)齊方式
alignment = xlwt.Alignment()  # Create Alignment
# May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.horz = xlwt.Alignment.HORZ_CENTER
# May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER
style = xlwt.XFStyle()  # Create Style
style.alignment = alignment  # Add Alignment to Style
worksheet.write(2, 0, '居中', style)

# 寫入帶顏色背景的數(shù)據(jù)
pattern = xlwt.Pattern()  # Create the Pattern
# May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5  # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
style = xlwt.XFStyle()  # Create the Pattern
style.pattern = pattern  # Add Pattern to Style
worksheet.write(0, 1, '顏色', style)

# 寫入日期
style = xlwt.XFStyle()
# Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
style.num_format_str = 'M/D/YY'
worksheet.write(0, 2, datetime.datetime.now(), style)

# 寫入公式
worksheet.write(0, 3, 5)  # Outputs 5
worksheet.write(0, 4, 2)  # Outputs 2
# Should output "10" (A1[5] * A2[2])
worksheet.write(1, 3, xlwt.Formula('D1*E1'))
# Should output "7" (A1[5] + A2[2])
worksheet.write(1, 4, xlwt.Formula('SUM(D1,E1)'))

# 寫入超鏈接
worksheet.write(1, 0, xlwt.Formula('HYPERLINK("http://www.baidu.com";"百度一下")'))
# 保存
workbook.save('Excel_test.xls')

需要注意的是最好在當(dāng)前路徑下通過(guò)命令行執(zhí)行,否則無(wú)法生成文件。

openpyxl

openpyxl是一個(gè)Python庫(kù),用于讀取/寫入Excel 2010 xlsx/xlsm/xltx/xltm文件。
安裝包

pip install openpyx

安裝完成可以開始進(jìn)行讀取數(shù)據(jù)

import openpyxl
import os
file_path = os.path.dirname(os.path.abspath(__file__))
base_path = os.path.join(file_path, 'data.xlsx')
workbook = openpyxl.load_workbook(base_path)
worksheet = workbook.get_sheet_by_name('Sheet1')
row3=[item.value for item in list(worksheet.rows)[2]]
print('第3行值',row3)
col3=[item.value for item in list(worksheet.columns)[2]]
print('第3行值',col3)
cell_2_3=worksheet.cell(row=2,column=3).value
print('第2行第3列值',cell_2_3)
max_row=worksheet.max_row
print('最大行',max_row)


現(xiàn)在我們來(lái)開始寫入數(shù)據(jù)

import openpyxl
import datetime
from openpyxl.styles import Font, colors, Alignment
#實(shí)例化
workbook = openpyxl.Workbook()
# 激活 worksheet
sheet=workbook.active
#寫入數(shù)據(jù)
sheet['A1']='python'
sheet['B1']='javascript'
#寫入時(shí)間
sheet['A2'] = datetime.datetime.now().strftime("%Y-%m-%d")
# 第2行行高
sheet.row_dimensions[2].height = 40
# B列列寬
sheet.column_dimensions['B'].width = 30
# 設(shè)置A1中的數(shù)據(jù)垂直居中和水平居中
sheet['A1'].alignment = Alignment(horizontal='center', vertical='center')
# 下面的代碼指定了等線24號(hào),加粗斜體,字體顏色黃色。直接使用cell的font屬性,將Font對(duì)象賦值給它。
bold_itatic_24_font = Font(name='等線', size=24, italic=True, color='00FFBB00', bold=True)
sheet['B1'].font = bold_itatic_24_font
# 合并單元格, 往左上角寫入數(shù)據(jù)即可
sheet.merge_cells('A2:B2') # 合并一行中的幾個(gè)單元格
# 拆分單元格
# sheet.unmerge_cells('A2:B2')
#保存
workbook.save('new.xlsx')


pandas

pandas支持xls, xlsx, xlsm, xlsb, odf, ods和odt文件擴(kuò)展名從本地文件系統(tǒng)或URL讀取。支持讀取單個(gè)工作表或工作表列表的選項(xiàng)。
首先依然是安裝包

pip install pandas

語(yǔ)法:
pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False,dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, parse_dates=False, date_parser=None, thousands=None, comment=None, skipfooter=0, convert_float=True, **kwds)

  • io,Excel的存儲(chǔ)路徑
  • sheet_name,要讀取的工作表名稱
  • header, 用哪一行作列名
  • names, 自定義最終的列名
  • index_col, 用作索引的列
  • usecols,需要讀取哪些列
  • squeeze,當(dāng)數(shù)據(jù)僅包含一列
  • converters ,強(qiáng)制規(guī)定列數(shù)據(jù)類型
  • skiprows,跳過(guò)特定行
  • nrows ,需要讀取的行數(shù)
  • skipfooter , 跳過(guò)末尾n行
import pandas as pd 
import os

file_path = os.path.dirname(os.path.abspath(__file__))
base_path = os.path.join(file_path, 'data.xlsx')
df = pd.read_excel(base_path)
print(df)


寫入數(shù)據(jù)
語(yǔ)法:
DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)
參數(shù)說(shuō)明:

  • excel_writer:文件路徑或現(xiàn)有的ExcelWriter
  • sheet_name:將包含數(shù)據(jù)文件的工作表的名稱
  • na_rep:缺失的數(shù)據(jù)表示
  • float_format:格式化浮點(diǎn)數(shù)的字符串。例如float_format = " %。2f"格式為0.1234到0.12。
  • columns:列
  • header:寫出列名。如果給定一個(gè)字符串列表,則假定它是列名的別名。
  • index:寫入行名稱(索引)
  • index_label:如果需要,索引列的列標(biāo)簽。如果未指定,并且標(biāo)頭和索引為真,則使用索引名。如果DataFrame使用多索引,應(yīng)該給出一個(gè)序列。
  • startrow:左上角的單元格行轉(zhuǎn)儲(chǔ)數(shù)據(jù)幀。
  • startcol:左上角單元格列轉(zhuǎn)儲(chǔ)數(shù)據(jù)幀。
  • engine:編寫要使用的引擎“ openpyxl”或“ xlsxwriter”。 您還可以通過(guò)選項(xiàng)io.excel.xlsx.writer,io.excel.xls.writer和io.excel.xlsm.writer進(jìn)行設(shè)置。
  • merge_cells:將多索引和層次結(jié)構(gòu)行寫入合并單元格。
  • encoding:對(duì)生成的excel文件進(jìn)行編碼。僅對(duì)xlwt有必要,其他編寫器本身支持unicode。
  • inf_rep:表示無(wú)窮大。
  • verbose:在錯(cuò)誤日志中顯示更多信息。
  • freeze_panes:指定要凍結(jié)的最底部的行和最右邊的列
from pandas import DataFrame

data = {'name': ['張三', '李四', '王五'],'age': [11, 12, 13],'sex': ['男', '女', '男']}

df = DataFrame(data)

df.to_excel('file.xlsx')


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多