1讀excel要用到xlrd模塊(支持xls、xlsx)
import xlrd
filename="C:/Users/11/Desktop/2.xlsx"
book = xlrd.open_workbook(filename) #打開Excel文件讀取數據
sheet =book.sheets()[0] #指定工作表
print book.nsheets #獲取sheet總數
print sheet.nrows #獲取行數
print sheet.ncols #獲取列數
print(sheet.cell(1,2)) #獲取單元格2行3列的值
print(sheet.row_values(0)) #獲取第1行的值(返回數組)
print(sheet.col_values(0)) #獲取第1列的值(返回數組)
指定工作表的三種方式:
sheet = book.sheets()[0]
sheet = book.sheet_by_index(0)
sheet = book.sheet_by_name('Sheet1') #有的資料顯示(u'Sheet1'),測試兩種均可
2寫excel要用到xlwt模塊(支持xls)
import xlwt
book = xlwt.Workbook(encoding = 'ascii') #創建workbook
sheet = book.add_sheet('sheet1') #創建表
sheet.write(1, 2, label = 'hello') #往單元格2行3列寫入內容
book.save("C:/Users/11/Desktop/temp/3/3.xls") #保存
encoding和label要對應:
比如encoding = 'utf8' 對應 label = '你好',encoding = 'ascii' 對應 label = 'hello'。
如果encoding = 'ascii' 對應 label = '你好' 則會報錯: 'ascii' codec can't decode byte 0xe5 in position ......
文件保存路徑:
可以是相對路徑,也可以是絕對路徑。
如果路徑中的文件夾不存在則報錯: No such file or directory......
如果文件不存在會自動創建,已存在會覆蓋處理(覆蓋整個文件,不僅僅是sheet或者單元格)。
3修改excel可以用xlutils、openpyxl模塊
3.1xlutils
(支持xls)
import xlrd
from xlutils.copy import copy
workbook=xlrd.open_workbook('3.xls')
workbooknew=copy(workbook) #copy:將xlrd.Book轉為xlwt.Workbook。
ws=workbooknew.get_sheet(0) #注意此處用的是get_sheet,不同於xlrd模塊指定工作表的三種方式。
ws.write(0,1,"changed12345")
workbooknew.save("3copy.xls")
xlutils是一個工具模塊,一般只用到copy模塊,用於修改另存Excel文件。具體實現步驟是:將需要更改的excel文件打開,用xlutils包的copy將excel文件拷貝一份,然后進行修改操作,最后保存。實際是在xlrd.Book和xlwt.Workbook之間建立了一個管道而已。
所以,xlutils修改當前文件的方法就是,最后保存的時候文件名同原名,即替換原文件:workbooknew.save("3.xls")。
xlutils也可以對xlsx格式進行操作,但是最后保存只支持xls格式。
3.2
openpyxl
(支持xlsx)
from openpyxl import load_workbook
book = load_workbook('333.xlsx')
sheet=book.get_sheet_by_name('Sheet2')
sheet['A1']='hello'
sheet['A5']=123
book.save('333.xlsx')
同xlutils相比好像只是少了copy環節,語法稍有不同,最后也是保存為同名文件才達到修改當前文件的目的。
如果load_workbook('3.xls')程序報錯:InvalidFileException: openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert it to the more recent .xlsx file format.
注意
現在已經Office2019了,如果還只支持2003版的xls格式就會被人拋棄。后面還有更便利的庫推出。
在Excel中內容尾部存在若干個空格時,可能是人為產生,VBA會自動去重尾部空格,Python不會,需要strip()處理。
https://cloud.tencent.com/developer/article/1191080 **