xlrd模塊可以用於讀取Excel的數據,速度非常快,推薦使用!
官方文檔:https://xlrd.readthedocs.io/en/latest/
到python官網下載http://pypi.python.org/pypi/xlrd模塊安裝,前提是已經安裝了python 環境,或者在cmd窗口 pip install xlrd
empty(空的)
string(text)
number
date
boolean
error
blank(空白表格)
#文件名以及路徑,如果路徑或者文件名有中文給前面加一個 r
data = xlrd.open_workbook(filename)
excel中最重要的方法就是book和sheet的操作
#通過索引順序獲取
table = data.sheets()[0]
#通過索引順序獲取
table = data.sheet_by_index(sheet_indx)
#通過名稱獲取
table = data.sheet_by_name(sheet_name)
# 以上三個函數都會返回一個xlrd.sheet.Sheet()對象
#返回book中所有工作表的名字
names = data.sheet_names()
#檢查某個sheet是否導入完畢
data.sheet_loaded(sheet_name or indx)
# 獲取該sheet中的行數,注,這裡table.nrows後面不帶().
nrows = table.nrows
# 返回由該行中所有的單元格對象組成的列表,這與tabel.raw()方法並沒有區別。
table.row(rowx)
# 返回由該行中所有的單元格對象組成的列表table.row_slice(rowx)
# 返回由該行中所有單元格的數據類型組成的列表;table.row_types(rowx, start_colx=0, end_colx=None)
# 返回由該行中所有單元格的數據組成的列表table.row_values(rowx, start_colx=0, end_colx=None)
# 返回該行的有效單元格長度,即這一行有多少個數據# 獲取列表的有效列數
ncols = table.ncols
# 返回由該列中所有的單元格對象組成的列表
table.col(colx, start_rowx=0, end_rowx=None)
# 返回由該列中所有的單元格對象組成的列表
table.col_slice(colx, start_rowx=0, end_rowx=None)
# 返回由該列中所有單元格的數據類型組成的列表table.col_types(colx, start_rowx=0, end_rowx=None)
# 返回由該列中所有單元格的數據組成的列表
table.col_values(colx, start_rowx=0, end_rowx=None)
# 返回單元格對象
table.cell(rowx,colx)
# 返回對應位置單元格中的數據類型table.cell_type(rowx,colx)
# 返回對應位置單元格中的數據import xlrd
xlsx = xlrd.open_workbook('./3_1 xlrd 讀取 操作練習.xlsx')
# 通過sheet名查找:xlsx.sheet_by_name("sheet1")
# 通過索引查找:xlsx.sheet_by_index(3)
table = xlsx.sheet_by_index(0)
# 獲取單個表格值 (2,1)表示獲取第3行第2列單元格的值
value = table.cell_value(2, 1)
print("第3行2列值為",value)
# 獲取表格行數
nrows = table.nrows
print("表格一共有",nrows,"行")
# 獲取第4列所有值(列表生成式)
name_list = [str(table.cell_value(i, 3)) for i in range(1, nrows)]
print("第4列所有的值:",name_list)
xlwt可以用於寫入新的Excel表格或者在原表格基礎上進行修改,速度也很快,推薦使用!
官方文檔:https://xlwt.readthedocs.io/en/latest/
3.2 pip安裝xlwt:使用xlwt創建新表格寫入
def fun3_2_2():
# 創建新的workbook(其實就是創建新的excel)
workbook = xlwt.Workbook(encoding= 'ascii')
# 創建新的sheet表
worksheet = workbook.add_sheet("My new Sheet")
# 往表格寫入內容
worksheet.write(0,0, "內容1")
worksheet.write(2,1, "內容2")
# 保存
workbook.save("新創建的表格.xls")
def fun3_2_3():
# 創建新的workbook(其實就是創建新的excel)
workbook = xlwt.Workbook(encoding= 'ascii')
# 創建新的sheet表
worksheet = workbook.add_sheet("My new Sheet")
# 初始化樣式
style = xlwt.XFStyle()
# 為樣式創建字體
font = xlwt.Font()
font.name = 'Times New Roman' #字體
font.bold = True #加粗
font.underline = True #下劃線
font.italic = True #斜體
# 設置樣式
style.font = font
# 往表格寫入內容
worksheet.write(0,0, "內容1")
worksheet.write(2,1, "內容2",style)
# 保存
workbook.save("新創建的表格.xls")
xlwt中列寬的值表示方法:默認字體0的1/256為衡量單位。xlwt創建時使用的默認寬度為2960,既11個字符0的寬度所以我們在設置列寬時可以用如下方法:width = 256 * 20 256為衡量單位,20表示20個字符寬度。
def fun3_2_4():
# 創建新的workbook(其實就是創建新的excel)
workbook = xlwt.Workbook(encoding= 'ascii')
# 創建新的sheet表
worksheet = workbook.add_sheet("My new Sheet")
# 往表格寫入內容
worksheet.write(0,0, "內容1")
worksheet.write(2,1, "內容2")
# 設置列寬
worksheet.col(0).width = 256*20
# 保存
workbook.save("新創建的表格.xls")
在xlwt中沒有特定的函數來設置默認的列寬及行高,行高是在單元格的樣式中設置的,你可以通過自動換行通過輸入文字的多少來確定行高。
def fun3_2_5():
# 創建新的workbook(其實就是創建新的excel)
workbook = xlwt.Workbook(encoding= 'ascii')
# 創建新的sheet表
worksheet = workbook.add_sheet("My new Sheet")
# 往表格寫入內容
worksheet.write(0,0, "內容1")
worksheet.write(2,1, "內容2")
# 設置行高
style = xlwt.easyxf('font:height 360;') # 18pt,類型小初的字號
row = worksheet.row(0)
row.set_style(style)
# 保存
workbook.save("新創建的表格.xls")
def fun3_2_6():
# 創建新的workbook(其實就是創建新的excel)
workbook = xlwt.Workbook(encoding='ascii')
# 創建新的sheet表
worksheet = workbook.add_sheet("My new Sheet")
# 往表格寫入內容
worksheet.write(0, 0, "內容1")
# 合併 第1行到第2行 的 第0列到第3列
worksheet.write_merge(1, 2, 0, 3, 'Merge Test')
# 保存
workbook.save("新創建的表格.xls")
def fun3_2_7():
# 創建新的workbook(其實就是創建新的excel)
workbook = xlwt.Workbook(encoding='ascii')
# 創建新的sheet表
worksheet = workbook.add_sheet("My new Sheet")
# 往表格寫入內容
worksheet.write(0, 0, "內容1")
# 設置邊框樣式
borders = xlwt.Borders() # Create Borders
# May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR,
# MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED,
# MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.
# DASHED虛線
# NO_LINE沒有
# THIN實線
borders.left = xlwt.Borders.DASHED
borders.right = xlwt.Borders.DASHED
borders.top = xlwt.Borders.DASHED
borders.bottom = xlwt.Borders.DASHED
borders.left_colour = 0x40
borders.right_colour = 0x40
borders.top_colour = 0x40
borders.bottom_colour = 0x40
style = xlwt.XFStyle() # Create Style
style.borders = borders # Add Borders to Style
worksheet.write(0, 0, '內容1', style)
worksheet.write(2, 1, "內容2")
# 保存
workbook.save("新創建的表格.xls")
def fun3_2_8():
# 創建新的workbook(其實就是創建新的excel)
workbook = xlwt.Workbook(encoding='ascii')
# 創建新的sheet表
worksheet = workbook.add_sheet("My new Sheet")
# 往表格寫入內容
worksheet.write(0, 0, "內容1")
# 創建樣式
pattern = xlwt.Pattern()
# May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
# May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow,
# 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow ,
# almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...
pattern.pattern_fore_colour = 5
style = xlwt.XFStyle()
style.pattern = pattern
# 使用樣式
worksheet.write(2, 1, "內容2", style)
3.9 xlwt 設置單元格對齊
xlwt中列寬的值表示方法:默認字體0的1/256為衡量單位。
xlwt創建時使用的默認寬度為2960,既11個字符0的寬度,
所以我們在設置列寬時可以用如下方法:
width = 256 * 20 256為衡量單位,20表示20個字符寬度
def fun3_2_9():
# 創建新的workbook(其實就是創建新的excel)
workbook = xlwt.Workbook(encoding= 'ascii')
# 創建新的sheet表
worksheet = workbook.add_sheet("My new Sheet")
# 往表格寫入內容
worksheet.write(0,0, "內容1")
# 設置樣式
style = xlwt.XFStyle()
al = xlwt.Alignment()
# VERT_TOP = 0x00 上端對齊
# VERT_CENTER = 0x01 居中對齊(垂直方向上)
# VERT_BOTTOM = 0x02 低端對齊
# HORZ_LEFT = 0x01 左端對齊
# HORZ_CENTER = 0x02 居中對齊(水平方向上)
# HORZ_RIGHT = 0x03 右端對齊
al.horz = 0x02 # 設置水平居中
al.vert = 0x01 # 設置垂直居中
style.alignment = al
# 對齊寫入
worksheet.write(2,1, "內容2",style)
# 保存
workbook.save("新創建的表格.xls")