在python中使用openpyxl和xlrd建立一個新Excel並把原表格資料複製到新表中
阿新 • • 發佈:2018-12-15
在Python中使用openpyxl和xlrd建立一個新Excel並把原表格資料複製到新表中
新的開始
文科出生,經濟學專業,年近四旬,純粹是把這個當成一個興趣在學。很早之前就打算學Python,但是一直停留在安裝好Python,這幾天比較空閒,開始從最最基礎自學,期間遇到很多坑,不少是靠CSDN的學習筆記填上的,所以也在這裡開一個,完整記錄一個0基礎小白的學習歷程,也希望能對後來者有一點幫助。 由於工作的關係,與Excel打交道比較多,所以就從Python與Excel的結合開始吧。
import xlrd
import openpyxl
#import不可以大寫,xlwt只能解決xls,xlsx需要用openpyxl,安裝程式碼:CMD下,不需
#進入python安裝直接使用pip3 install xlrd/openpyxl
#安裝完,如果在CMD裡可以import,但在pycharm裡面不行且提示ModuleNotFoundError:
#No module named 'xlrd',則需要到Setting - Project Interpreter裡面選擇,點
#下拉選單,看看哪個帶著你剛安裝的模組,就選哪個。
source_xls = [(r'c:\1\1.xlsx'),(r'c:\1\2.xlsx')]
#羅列出所有需要被複制的工作簿
#這個是別人的程式碼我複製過來,我猜這裡的r代表路徑,最後的save也證實了我的猜測
data = []
#[]代表的是空的可變list,這個表示把data設為一個空的可變list
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))
#.append代表在原有數列的最後,插入括號中的資料
#i代表兩個不同的工作簿
#這裡有的屬性用'.',有的屬性用'_',根據我自己的猜測,應該是動作,比如open用','
#如果是本身的屬性,比如sheet之類,就用'_'
#這裡推薦用Pycharm來寫程式碼,畢竟對新手而言,介面畢竟友好,也有一些提示
wk = openpyxl.Workbook()
#建立一個新的表格,這裡要注意,Workbook裡的W一定要大寫,我開始用的是小寫,總顯示
#錯誤,在這裡花了好久找問題
wkts = wk.active
#在建立工作簿的時候,會建立一個預設的工作表sheet,這裡表示使用當前的活躍工作表
#如果不想用預設的工作表,程式碼為 wkts=wk.create_sheet("sheet_name")
for i in range(len(data)):
for j in range(len(data[i])):
wkts.cell(i+1,j+1,data[i][j])
wk.save(r'c:\1\Excel_name.xlsx')
# 為什麼要用i+1 和 j+1呢?因為對range來說,預設是0開始的,也就是第一個數字是0,
#而cell()這個函式,他的行和列必須是個至少為1的整數,所以要用+1
#有人會問,那我在range的時候,就用range(1,len(data))行不行呢?
#答案是不行,因為這樣就等於少了0行代表的那部分資料,通常是標題不見了
#最後save()函式,前面也要加r,才能顯示路徑,否則會把引號裡所有的都認為是檔名