1. 程式人生 > >在python中使用openpyxl和xlrd建立一個新Excel並把原表格資料複製到新表中

在python中使用openpyxl和xlrd建立一個新Excel並把原表格資料複製到新表中

在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,才能顯示路徑,否則會把引號裡所有的都認為是檔名