使用xlsxwriter模塊和xlrd模塊操作Excel表格


1、xlsxwriter模塊介紹:主要用來生成excel表格,插入數據、插入圖標等表格操作

如下代碼:目的是往demo01.xlsx插入數據和圖片

# 導入xlsxwriter模塊:主要用來修改表格的數據
import xlsxwriter target_xlsx="D:/360Downloads/Software/py/demo01.xlsx"
# 創建工作簿
workbook=xlsxwriter.Workbook(target_xlsx) # 創建工作表
worksheet=workbook.add_worksheet() # 設置工作簿的格式
font=workbook.add_format({"font_size": 14}) # 設置工作表的列寬
worksheet.set_column=("A:A",20) # 寫值
worksheet.write(0,0,"Hello",font) # 寫值
worksheet.write(0,1,"World",font) # 寫值
worksheet.write(2,0, "123",font) # 寫值
worksheet.write(3, 0, "123.456", font) # 插入一張照片
worksheet.insert_image("B5", "D:/360Downloads/1.jpg") # 關閉工作簿
workbook.close()

結果:

或者如下代碼:

# 導入xlsxwriter模塊
import xlsxwriter # 目標文件
target_xlsx="D:/360Downloads/test01.xlsx"
# 創建工作簿
workbook=xlsxwriter.Workbook(target_xlsx) # 創建名叫person的工作表
worksheet=workbook.add_worksheet("person") # 設置工作簿的格式
font=workbook.add_format({"font_size": 14}) # 設置工作表的列寬
worksheet.set_column=("A:A",20) # 設置表頭
headings=["number","name","age"] # 自己造的數據
data=[ [1,2,3], ["Mr_choa","Mr_lai","Mr_z"], [24,14,48] ] # 表頭按行寫入數據
worksheet.write_row(0,0,headings) #造的數據按列寫入數據
worksheet.write_column("A2",data[0]) worksheet.write_column("B2",data[1]) worksheet.write_column('C2',data[2]) # 關閉文件流,要注意關閉Excel表格,不然報錯
workbook.close()

打開test01.xlsx,結果:

 

 運行代碼,如果有xlsxwriter.exceptions.FileCreateError: [Errno 13] Permission denied: 'D:/360Downloads/test01.xlsx'錯誤,關閉test01.xlsx表格再運行就不會報錯。

在xlsxwriter模塊中設置單元格的格式:

無論是

workfomat=workbook.add_format( { # 字體加粗
        'bold':True, # 單元格邊框寬度
        'border':1, # 字體對齊方式
        'align':'center', # 單元格背景顏色
        'fg_color':'#F4B084', # 字體大小
        'font_size':14 } )

或是通過創建fomat對象:

# 創建一個workfomat對象
workfomat=workbook.add_format() # 字體加粗
workfomat.set_bold(True) # 設置邊框寬度
workfomat.set_border(1) # 對齊方式:中心對齊
workfomat.set_align('center') # 設置背景顏色
workfomat.fg_color('blue') # 設置背景顏色
workfomat.bg_color('red')

 2、xlrd模塊介紹:xlrd就是讀Excel表

如下代碼:目的在讀取兩個源文件的數據,再寫入另外一個表格中

# 導入xlrd模塊:讀取源文件的數據
import xlrd # 導入xlsxwriter模塊:修改表格的數據
import xlsxwriter # 源文件
source_xls = ["D:/360Downloads/1.xlsx", "D:/360Downloads/2.xlsx"] # 目標文件
target_xls = "D:/360Downloads/3.xlsx"
# 從源文件中讀取數據
data = [] for i in source_xls: wb = xlrd.open_workbook(i) for sheet in wb.sheets(): for rownum in range(sheet.nrows): data.append(sheet.row_values(rownum)) print(data) # 創建工作簿寫入數據
workbook = xlsxwriter.Workbook(target_xls) # 創建工作表
worksheet = workbook.add_worksheet() # 設置工作簿的格式
font = workbook.add_format({"font_size":14}) # 寫入數據,遍歷工作表的數據個數
for i in range(len(data)): # 遍歷工作表數據的長度
    for j in range(len(data[i])): # 寫入數據
 worksheet.write(i, j, data[i][j], font) # 添加數據
worksheet.write(4,0,"haha",font) # 關閉文件流,要注意關閉Excel表格,不然報錯
workbook.close()

源文件1.xlsx:

 

 源文件2.xlsx:

 

 結果得到3.xlsx:

 

 3、在excel中插入折線圖

在表格中插入數據,並且插入折線圖。

# 導入xlsxwriter模塊
import xlsxwriter # 目標文件
target_xlsx="D:/360Downloads/test01.xlsx"
# 創建工作簿
workbook=xlsxwriter.Workbook(target_xlsx) # 創建名叫person的工作表
worksheet=workbook.add_worksheet("person") # 設置工作簿的格式
font=workbook.add_format({"font_size": 14}) # 設置工作表的列寬
worksheet.set_column=("A:A",20) # 設置表頭
headings=["name","testA","testB"] # 自己造的數據
data=[ ["Mr_choa","Mr_lai","Mr_z",'Mr_r',"Mr_d"], [90,80,70,87,56], [100,50,40,45,68] ] # 表頭按行寫入數據
worksheet.write_row(0,0,headings) #造的數據按列寫入數據
worksheet.write_column("A2",data[0]) worksheet.write_column("B2",data[1]) worksheet.write_column('C2',data[2]) # 創建折線圖
workchart=workbook.add_chart({'type':'line'}) # 給圖表設置格式
workchart.add_series( { # 折線名稱
        'name':'=person!$B$1', 'categories':'=person!$A$2:$A$6', # 折線的值
        'values':'=person!$B$2:$B$6', # 折線顏色
        'line':{'color':'red'} } ) workchart.add_series( { # 折線名稱
        'name':'=person!$C$1', 'categories':'=person!$A$2:$A$6', # 折線的值
        'values':'=person!$C$2:$C$6', # 折線的顏色
        'line':{'color':'blue'} } ) # 設置圖表的表頭
workchart.set_title({'name':'測試'}) workchart.set_x_axis({'name':'x軸'}) workchart.set_y_axis({'name':'y軸'}) # 設置圖表樣式類型
workchart.set_style(1) # 設置圖表的位置
worksheet.insert_chart('A10',workchart,{'x_offset':25,'y_offset':10}) # 關閉文件流,要注意關閉Excel表格,不然報錯
workbook.close()

結果:

 

 4、圖表的type

area:面積圖

bar:直方圖

column:柱形圖

line:折線圖

pie:餅圖

doughnut:環形圖

scatter:散點圖

stock:股票趨勢圖

rader:雷達圖

5、表格的一些操作(合並單元格)

#合並單元格
worksheet.merge_range('D1:D7','合並單元格')       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM