python高手之路python處理excel檔案(方法彙總)
阿新 • • 發佈:2019-01-24
用python來自動生成excel資料檔案。python處理excel檔案主要是第三方模組庫xlrd、xlwt、xluntils和pyExcelerator,除此之外,python處理excel還可以用win32com和openpyxl模組。
方法一:
小羅問我怎麼從excel中讀取資料,然後我百了一番,做下記錄
excel資料圖(小羅說資料要給客戶保密,我隨手寫了幾行資料):
python讀取excel檔案程式碼:
excel的寫操作等後面用到的時候在做記錄#!/usr/bin/env python # -*- coding: utf-8 -*- # 讀取excel資料 # 小羅的需求,取第二行以下的資料,然後取每行前13列的資料 import xlrd data = xlrd.open_workbook('test.xls') # 開啟xls檔案 table = data.sheets()[0] # 開啟第一張表 nrows = table.nrows # 獲取表的行數 for i in range(nrows): # 迴圈逐行列印 if i == 0: # 跳過第一行 continue print table.row_values(i)[:13] # 取前十三列
方法二:
使用xlrd讀取檔案,使用xlwt生成Excel檔案(可以控制Excel中單元格的格式)。但是用xlrd讀取excel是不能對其進行操作的;而xlwt生成excel檔案是不能在已有的excel檔案基礎上進行修改的,如需要修改檔案就要使用xluntils模組。pyExcelerator模組與xlwt類似,也可以用來生成excel檔案。
1. [程式碼]test_xlrd.py
#coding=utf-8 ####################################################### #filename:test_xlrd.py #author:defias #date:xxxx-xx-xx #function:讀excel檔案中的資料 ####################################################### import xlrd #開啟一個workbook workbook = xlrd.open_workbook('E:\\Code\\Python\\testdata.xls') #抓取所有sheet頁的名稱 worksheets = workbook.sheet_names() print('worksheets is %s' %worksheets) #定位到sheet1 worksheet1 = workbook.sheet_by_name(u'Sheet1') """ #通過索引順序獲取 worksheet1 = workbook.sheets()[0] #或 worksheet1 = workbook.sheet_by_index(0) """ """ #遍歷所有sheet物件 for worksheet_name in worksheets: worksheet = workbook.sheet_by_name(worksheet_name) """ #遍歷sheet1中所有行row num_rows = worksheet1.nrows for curr_row in range(num_rows): row = worksheet1.row_values(curr_row) print('row%s is %s' %(curr_row,row)) #遍歷sheet1中所有列col num_cols = worksheet1.ncols for curr_col in range(num_cols): col = worksheet1.col_values(curr_col) print('col%s is %s' %(curr_col,col)) #遍歷sheet1中所有單元格cell for rown in range(num_rows): for coln in range(num_cols): cell = worksheet1.cell_value(rown,coln) print cell """ #其他寫法: cell = worksheet1.cell(rown,coln).value print cell #或 cell = worksheet1.row(rown)[coln].value print cell #或 cell = worksheet1.col(coln)[rown].value print cell #獲取單元格中值的型別,型別 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error cell_type = worksheet1.cell_type(rown,coln) print cell_type """
2. [程式碼]test_xlwt.py
3. [程式碼]test_xlutils.py#coding=utf-8 ####################################################### #filename:test_xlwt.py #author:defias #date:xxxx-xx-xx #function:新建excel檔案並寫入資料 ####################################################### import xlwt #建立workbook和sheet物件 workbook = xlwt.Workbook() #注意Workbook的開頭W要大寫 sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True) sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True) #向sheet頁中寫入資料 sheet1.write(0,0,'this should overwrite1') sheet1.write(0,1,'aaaaaaaaaaaa') sheet2.write(0,0,'this should overwrite2') sheet2.write(1,2,'bbbbbbbbbbbbb') """ #-----------使用樣式----------------------------------- #初始化樣式 style = xlwt.XFStyle() #為樣式建立字型 font = xlwt.Font() font.name = 'Times New Roman' font.bold = True #設定樣式的字型 style.font = font #使用樣式 sheet.write(0,1,'some bold Times text',style) """ #儲存該excel檔案,有同名檔案時直接覆蓋 workbook.save('E:\\Code\\Python\\test2.xls') print '建立excel檔案完成!'
#coding=utf-8
#######################################################
#filename:test_xlutils.py
#author:defias
#date:xxxx-xx-xx
#function:向excel檔案中寫入資料
#######################################################
import xlrd
import xlutils.copy
#開啟一個workbook
rb = xlrd.open_workbook('E:\\Code\\Python\\test1.xls')
wb = xlutils.copy.copy(rb)
#獲取sheet物件,通過sheet_by_index()獲取的sheet物件沒有write()方法
ws = wb.get_sheet(0)
#寫入資料
ws.write(1, 1, 'changed!')
#新增sheet頁
wb.add_sheet('sheetnnn2',cell_overwrite_ok=True)
#利用儲存時同名覆蓋達到修改excel檔案的目的,注意未被修改的內容保持不變
wb.save('E:\\Code\\Python\\test1.xls')
4. [程式碼]test_pyExcelerator_read.py#coding=utf-8
#######################################################
#filename:test_pyExcelerator_read.py
#author:defias
#date:xxxx-xx-xx
#function:讀excel檔案中的資料
#######################################################
import pyExcelerator
#parse_xls返回一個列表,每項都是一個sheet頁的資料。
#每項是一個二元組(表名,單元格資料)。其中單元格資料為一個字典,鍵值就是單元格的索引(i,j)。如果某個單元格無資料,那麼就不存在這個值
sheets = pyExcelerator.parse_xls('E:\\Code\\Python\\testdata.xls')
print sheets
5.
[程式碼]test_pyExcelerator.py#coding=utf-8
#######################################################
#filename:test_pyExcelerator.py
#author:defias
#date:xxxx-xx-xx
#function:新建excel檔案並寫入資料
#######################################################
import pyExcelerator
#建立workbook和sheet物件
wb = pyExcelerator.Workbook()
ws = wb.add_sheet(u'第一頁')
#設定樣式
myfont = pyExcelerator.Font()
myfont.name = u'Times New Roman'
myfont.bold = True
mystyle = pyExcelerator.XFStyle()
mystyle.font = myfont
#寫入資料,使用樣式
ws.write(0,0,u'ni hao 帕索!',mystyle)
#儲存該excel檔案,有同名檔案時直接覆蓋
wb.save('E:\\Code\\Python\\mini.xls')
print '建立excel檔案完成!'