摘要: 考慮到VBA寫不好但是有對批量化處理數據的需求,所以推薦Python自帶的xlrd和xlwt庫對Excel表格數據進行讀寫操作。簡明的代碼風格很適合上手。 首先安裝對應的xlrd和xlwt 打開cmd命令視窗輸入pip install xlrd和pip install xlwt就可以安裝。之 ...
摘要: 考慮到VBA寫不好但是有對批量化處理數據的需求,所以推薦Python自帶的xlrd和xlwt庫對Excel表格數據進行讀寫操作。簡明的代碼風格很適合上手。
首先安裝對應的xlrd和xlwt
打開cmd命令視窗輸入pip install xlrd和pip install xlwt就可以安裝。之後輸入pip list檢查是否成功配置:
xlrd操作#
接下來就是常用的語法操作:
excel_data = xlrd.open_workbook(文件路徑')#得到對應的工作表
sheet = excel_data.sheets()[工作表序號]#得到對應工作表中的某一個表格
sheet.row_values(2)#對應的某一行的數據
sheet.cell(6,1).value#對應某一列的數據
以該表格為例先試一下對應的語句:
先指定對應的表格和其中的某一個表,否則會提示出錯編譯不通過。將以上代碼運行得到:
源碼如下:
import xlrd
import xlwt
excel_data = xlrd.open_workbook(文件路徑')
excel_data = xlrd.open_workbook(r'C:\Users\hys mac\Desktop\實用的excel表格模板.xls')
sheet = excel_data.sheets()[工作表序號]
sheet = excel_data.sheets()[0]
print(sheet.row_values(2)) #列印某一行數據
print(sheet.col_values(1))#列印某一列
print( )
print ( sheet.cell(6,1).value)#列印某個具體值
運行結果如下:
對比表格得到一些值得註意的地方,指定的行數列數是從0開始,打開指定的表格時要註意絕對路徑時要連同文件名和文件尾碼也要帶上才能成功讀取數據。
接下來實驗讀取指定的某個單元格的數據:
sheet.cell(行,列).value
運行得到:
對比表格得到數據:
是其中的(7,B),和之前提到的從零開始計數是一致的。
除了以上列舉的一些操作外還有其他的常見語句可以在相關文檔和官網中查看,文末有相關鏈接,接下來實驗另一個xlwt庫以實現對excel表格的寫入操作。
xlwt操作#
對於excel表格一般關心的問題在於以下幾個方面:
- 創建工作薄和表
- 寫入單元格
- 常見格式設置(貨幣文本等)
- 創建公式
- 保存
接下來依次嘗試以上提到的各個功能:
- 工作薄和表對應的對象為:workbook,sheet
2.單元格賦值:
這裡嘗試了一下採用負數
編譯沒有問題留作後面保存後檢查結果是否正確。
3.格式設置:
可見對應傳入參數除行列和值外還包括style這一預設省略的參數。這裡試驗設置的格式為加粗。其他格式可以參照查找文末文檔實現。這裡有一些常見得其他格式:
style = easyxf(num_format_str='$#,##0.00')
# or set it directly on the style object
style = easyxf('font: bold 1')
style.num_format_str = '$#,##0.00'
sheet.write(0, 0, '100.00', style)
4.創建公式:
使用xlwt.Formula可以實現Excel公式。
sheet.write(0, 0, xlwt.Formula('HYPERLINK("http://yujitomita.com"; "click me")'))
5.保存操作:
workbook.save("Python.xls")
wbk.save('路徑名')
這裡值得提醒的是工作表的命名要小於31個字元且不能包括特殊字元(:。,等)。
運行結果:
按照之前的坑(-1,0)這裡試運行結果:
# encoding : utf-8
import xlrd
import xlwtworkbook = xlwt.Workbook()
sheet = workbook.add_sheet("Sheet 1")#創建工作簿(workbook)和工作表(sheet)
sheet.write(-1, 0, 'Python')#行列對應
style = xlwt.easyxf('font: bold 1')
sheet.write(1, 1, 'style ', style)workbook.save('C:\Users\hys mac\Desktop\mr.c\python.xls')
報錯結果如下:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
遇到了文件編碼的問題,修改後一句:
workbook.save(r'C:\Users\hys mac\Desktop\mr.c\python.xls')
就回到了一開始留下的坑,單元格賦值規則應該與使用習慣一致不能為負數。最後修改得到:
import xlrd
import xlwtworkbook = xlwt.Workbook()
sheet = workbook.add_sheet("Sheet 1")#創建工作簿(workbook)和工作表(sheet)
sheet.write(1, 0, 'Python')#行列對應
style = xlwt.easyxf('font: bold 1')
sheet.write(1, 1, 'style ', style)workbook.save(r'C:\Users\hys mac\Desktop\mr.c\python1.xls') #文件路徑要存在且不能同名
結語和資料:
到這裡這兩個excel處理的模塊操作基本結束了,還有其他實現相關功能的模塊例如 openpyxl和win32com等有機會再寫一篇作為橫向對比的博文。https://www.zhihu.com/people/dou-wo-45知乎傳送門歡迎留言交流。創作不易,保留權利。python學習交流群:125240963
轉載至:https://my.oschina.net/aichirou/blog/683444