1. 程式人生 > >教你用Python寫excel

教你用Python寫excel

質量、速度、廉價,選擇其中兩個

在書寫這些程式碼之前你應該安裝一個庫 xlsxwriter

Xlsx是python用來構造xlsx檔案的模組,可以向excel2007+中寫text,numbers,formulas 公式以及hyperlinks超連結

可以完成xlsx檔案的自動化構造,包括:合併單元格,製作excel圖表等功能

workbook = xlsxwriter.Workbook('test.xlsx')

使用這段程式碼建立一個指定路徑名稱的xlsx檔案

worksheet = workbook.add_worksheet()

向其中新增一張表

expenses = (
    ['Rent', 1000],
    ['Gas', 100],
    ['Food', 300],
    ['Gym', 50],
)

定義表內顯示的資料,我這裡沒有寫表頭

for item, cost in (expenses):
    worksheet.write(row, col, item)
    worksheet.write(row, col + 1, cost)
    row += 1

然後迴圈寫入資料,write第一個引數是所在行,第二個引數是所在列,第三個引數是要寫入的資料

最後close()方法關閉檔案,附一份完整程式碼

import xlsxwriter

# 建立新表格
workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()

# 表格的內容
expenses = (
    ['Rent', 1000],
    ['Gas', 100],
    ['Food', 300],
    ['Gym', 50],
)

# 想象表格的佈局,座標 0,0 對應 A,1
row = 0
col = 0

# 填充每個單元格
for item, cost in (expenses):
    worksheet.write(row, col, item)
    worksheet.write(row, col + 1, cost)
    row += 1

workbook.close()

如果你要寫少量的資料你可以像上面這樣寫,但是如果你要寫一個很多列的資料這些寫就太Low了,xlsxwriter給我們提供了一個方法交write_row,呼叫該方法可以一次寫一行資料,不過該方法的定位方式和write不一樣,它的定位方式和你開啟excel時點選一個小格的定位方式相同,最左上角的是A1,旁邊的叫B1,下面的叫A2,我們來寫一個例子,順便給加上各列標題

import xlsxwriter
def save_excel(fin_result, tag_name, file_name):
  book = xlsxwriter.Workbook(r'%s.xlsx' % file_name)
  tmp = book.add_worksheet()
  row_num = len(fin_result)
  for i in range(1, row_num+2):
    if i == 1:
      tag_pos = 'A%s' % i
      tmp.write_row(tag_pos, tag_name)
    else:
      con_pos = 'A%s' % i
      content = fin_result[i-2] # -2是因為當i=2時下標應為0
      tmp.write_row(con_pos, content)
  book.close()
# 表格的內容
title_list=["第一列","第二列","第三列"]
text_list=[
    ["111","222","333"],
    ["444","555","666"],
    ["777","888","999"]
     ]
save_excel(text_list,title_list,"test")