1
xlrd
xlrd用於在Excel中讀寫數據
1、打開Excel工作簿
data=xlrf.open_workbook('data.xlsx')
2、查看工作簿裏所有sheet名稱
data.sheet_names()
3、選擇一個工作表(通過索引或名稱)
#獲取第一個工作表
table=data.sheets()[0]
#通過索引獲取第一個工作表
table=data.sheet_by_index(0)
#通過表名稱選擇工作表
table=data.sheet_by_name('hello')
4、獲取表格的行數和列數
nrows=table.nrows
ncols=table.ncols
5、獲取整行和整列的值
table.row_values(number)
table.column_values(number)
6、獲取單元格的值
cell_A1=table.row(0)[0].value
cell_A1=table.cell(0,0).value
cell_A1=table.col(0)[0].value
xlrd的寫操作,原博沒寫,我用的是xlwt,所以日後再補。
xlwt
xlwt爲純寫入操作
1、新建一個Excel文件(只能通過新建寫入)
1 data=xlwt.Workbook()
2、新建一個工作簿
table=data.add_sheet('hello')
3、寫入數據到A1單元格
table.write(0,0,'666')
如果對同一個單元格重複操作,會引發overwrite Exception,想要取消該功能,需要在添加工作表時指定爲可覆蓋
table=data.add_sheet('hello',cell_overwrite_ok=True)
保存文件
data.save('test.xls')
不支持xlsx格式,只能保存擴展名xls
xlwt支持一定樣式如下:
#初始化樣式
style=xlwt.XFStyle()
#爲樣式創建字體
font=xlwt.Font()
#指定字體名字
font.name='Time New Roman'
#字體加粗
font.bold=True
#將該font設定爲style的字體
style.font=font
#寫入到文件時使用該樣式
sheet.write(0,1,'hello world',style)
openpyxl
該模塊支持最新版的Excel文件格式,對Excel具有相應的讀寫操作,對此有專門的Reader和Writer兩個類,便於Excel文件的操作。雖然如此,但一般還用默認的workbook
來進行操作。
1、讀取Excel常用操作
from openpyxl.reader.excel import load_workbook
wb=load_workbook(filename)
2、顯示工作表的索引範圍
wb.get_named_ranges()
3、顯示所有工作表的名字
wb.get_sheet_names()
4、取得第一張表
sheetnames=wb.get_sheet_names()
ws=wb.get_sheet_by_name(sheetnames[0])
5、獲取表名
ws.title
6、獲取表的行數
ws.get_highest_row()
7、獲取表的列數
ws.get_highest_column()
8、單元格的讀取,此處和xlrd的讀取方式很相近,都是通過行和列的索引來讀取
#讀取B1單元格中的內容
ws.cell(0,1).value
也支持通過Excel座標來讀取數據
#讀取B1單元格中的內容
ws.cell("B1").value
寫操作只有一種方式,就是通過座標,例如要向單元格C1
寫數據,就要用類似ws.cell(“C1”).value=something
這樣的方式。一般推薦用openpyxl中的writer類來實現
#ExcelWriter,裏面封裝好了對Excel的寫操作
from openpyxl.writer.excel import ExcelWriter
#get_column_letter函數將數字轉換爲相應的字母,如1-->A,2-->B
from openpyxl.cell import get_column_letter
#新建一個workbook
wb = Workbook()
#新建一個excelWriter
ew = ExcelWriter(workbook = wb)
#設置文件輸出路徑與名稱
dest_filename = r'empty_book.xlsx'
#第一個sheet是ws
ws = wb.worksheets[0]
#設置ws的名稱
ws.title = "range names"
#向某個單元格中寫入數據
ws.cell("C1").value=u'哈哈'
#最後保存文件
ew.save(filename=dest_filename)