python用openpyxl操作excel
python操作excel方法
1)自身有Win32 COM操作office但講不清楚,可能不支援誇平臺,linux是否能用不清楚,其他有專業處理模組,如下
2)xlrd:(讀excel)表,xlrd讀大表效率高於openpyxl
3)xlwt:(寫excel)表,
xlrd和xlwt對版本上相容不太好,很多新版excel有問題。
新版excel處理:
openpyxl(可讀寫excel表)專門處理Excel2007及以上版本產生的xlsx檔案,xls和xlsx之間轉換容易
注意:如果文字編碼是“gb2312” 讀取後就會顯示亂碼,請先轉成Unicode
安裝openpyxl
1)下載openpyxl模組:https://pypi.python.org/pypi/openpyxl 2)解壓到指定檔案目錄:tar -xzvf openpyxl.tar.gz 3)進入目錄,找到setup.py檔案,執行命令:python setup.py install 如果報錯No module named setuptools 就使用命令“easy_install openpyxl”,easy_install for win32,會自動安裝setuptools。 這裡注意,如果不能自動安裝,基本上python的模組都通過命令 python 模組名.py install 來安裝,如果setuptools模組沒有,直接去官網下載,然後前面命令安裝就可以了 4)處理圖片還需要安裝pillow(PIL) To be able to include images (jpeg, png, bmp,...) into an openpyxl file, you will also need the “pillow” library that can be installed with: pip install pillow
pthon學習資料
python 學習小組http://www.thinksaas.cn/group/show/368/page/4 官網: https://pypi.python.org/pypi/openpyxl http://openpyxl.readthedocs.io/en/default/ good: http://blog.csdn.net/suofiya2008/article/details/6284208 http://blog.csdn.net/zzukun/article/details/49946147 http://www.thinksaas.cn/topics/0/501/501962.html
openpyxl的使用
openpyxl定義多種資料格式
最重要的三種:
NULL空值:對應於python中的None,表示這個cell裡面沒有資料。
numberic: 數字型,統一按照浮點數來進行處理。對應於python中的float。
string: 字串型,對應於python中的unicode。
Excel檔案三個物件
workbook: 工作簿,一個excel檔案包含多個sheet。
sheet:工作表,一個workbook有多個,表名識別,如“sheet1”,“sheet2”等。
cell: 單元格,儲存資料物件
1)匯入
from openpyxl import Workbook from openpyxl import load_workbook from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font, Color, Fill from openpyxl.styles import colors from openpyxl.styles import Fill,fills from openpyxl.formatting.rule import ColorScaleRule
2)開啟workbook:
wb = load_workbook('file_name.xlsx')
3)open sheet:
通過名字
ws = wb["frequency"]
等同於 ws2 = wb.get_sheet_by_name('frequency')
驗證命令ws is ws2 is ws3 輸出True
不知道名字用index
sheet_names = wb.get_sheet_names()
ws = wb.get_sheet_by_name(sheet_names[index])# index為0為第一張表
或者
ws =wb.active
等同於 ws = wb.get_active_sheet() #通過_active_sheet_index設定讀取的表,預設0讀第一個表
活動表表名wb.get_active_sheet().title
4)建新表
ws1 = wb.create_sheet() #預設插在最後
ws2 = wb.create_sheet(0) #插在開頭
建表後預設名按順序,如sheet1,sheet2...
ws.title = "New Title" #修改表名稱
簡化 ws2 = wb.create_sheet(title="Pi")
5)backgroud color of tab( be white by default)
ws.sheet_properties.tabColor = "1072BA" # set with RRGGBB color code
6)單元格使用
c = ws['A4'] #read 等同於 c = ws.cell('A4')
ws['A4'] = 4 #write
#ws.cell有兩種方式,行號列號從1開始
d = ws.cell(row = 4, column = 2) #行列讀寫
d = ws.cell('A4')
寫入cell值
ws.cell(row = 4, column = 2).value = 'test'
ws.cell(row = 4, column = 2, value = 'test')
7)訪問多個單元格
cell_range = ws['A1':'C2']
讀所有單元格資料
get_cell_collection()
8) 按行操作,按列操作
a)逐行讀
ws.iter_rows(range_string=None, row_offset=0, column_offset=0): range-string(string)-單元格的範圍:例如('A1:C4') row_offset-新增行 column_offset-新增列
返回一個生成器, 注意取值時要用value,例如:
for row in ws.iter_rows('A1:C2'):
for cell in row:
print cell
讀指定行、指定列:
rows=ws.rows#row是可迭代的
columns=ws.columns#column是可迭代的
列印第n行資料
print rows[n]#不需要用.value
print columns[n]#不需要用.value
b)逐行寫
(http://openpyxl.readthedocs.io/en/default/_modules/openpyxl/worksheet/worksheet.html#Worksheet.append)
ws.append(iterable)
新增一行到當前sheet的最底部 iterable必須是list,tuple,dict,range,generator型別的。 1,如果是list,將list從頭到尾順序新增。 2,如果是dict,按照相應的鍵新增相應的鍵值。
append([‘This is A1’, ‘This is B1’, ‘This is C1’])
append({‘A’ : ‘This is A1’, ‘C’ : ‘This is C1’})
append({1 : ‘This is A1’, 3 : ‘This is C1’})
8) #顯示有多少張表
wb.get_sheet_names()
#顯示錶名,錶行數,表列數
print ws.title
print ws.max_row
print ws.max_column
ws.get_highest_row() #UserWarning: Call to deprecated function
ws.get_highest_column()# UserWarning: Call to deprecated function
9) 獲得列號x的字母 col = get_column_letter(x), x從1開始
from openpyxl.utils import get_column_letter
for x in range( 1, len(record)+ 1 ):
col = get_column_letter(x)
ws.cell( '%s%s' %(col, i)).value = x
通過列字母獲取多個excel資料塊
cell_range = "E3:{0}28".format(get_column_letter(bc_col))
ws["A1"] = "=SUM(%s)"%cell_range
10)excel檔案是gbk編碼,讀入時需要先encode為gbk,再decode為unicode,再encode為utf8
cell_value.encode('gbk').decode('gbk').encode('utf8')
11) 公式計算formulae
ws["A1"] = "=SUM(1, 1)"
ws["A1"] = "=SUM(B1:C1)"
程式碼例項例項(直接修改使用)
from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl.cell import get_column_letter
dest_filename = 'empty_book.xlsx'
wb = Workbook()
ws1 = wb.active
ws1.title = "range names"
for row in range(1, 40):
ws1.append(range(600))
ws3 = wb.create_sheet(title="Data")
for row in range(10, 20):
for col in range(27, 54):
_ = ws3.cell(column=col, row=row, value="%s" % get_column_letter(col))
print(ws3['AA10'].value)
wb.save(filename = dest_filename)
sheet_ranges = wb['range names']
print(sheet_ranges['D18'].value)
ws['A1'] = datetime.datetime(2010, 7, 21)
ws['A1'].number_format #輸出'yyyy-mm-dd h:mm:ss'
rows = [
['Number', 'Batch 1', 'Batch 2'],
[2, 40, 30],
[3, 40, 25],
[4, 50, 30],
[5, 30, 10],
[6, 25, 5],
[7, 50, 10],
]
rows = [
['Date', 'Batch 1', 'Batch 2', 'Batch 3'],
[date(2015,9, 1), 40, 30, 25],
[date(2015,9, 2), 40, 25, 30],
[date(2015,9, 3), 50, 30, 45],
[date(2015,9, 4), 30, 25, 40],
[date(2015,9, 5), 25, 35, 30],
[date(2015,9, 6), 20, 40, 35],
]
for row in rows:
ws.append(row)
excel中圖片的處理,PIL模組
try:
from openpyxl.drawing import image
import PIL
except ImportError, e:
print "[ERROR]",e
report_file = self.excel_path + "/frquency_report_%d.xlsx" %id
shutil.copyfile(configs.PATTEN_FILE, report_file)
if not os.path.exists(report_file):
print "generate file failed: ", report_file
sys.exit(1)
wb = load_workbook(report_file)
ws = wb.get_sheet_by_name('frequency')
img_f = configs.IMAGE_LOGO
if os.path.exists(img_f):
try:
img = image.Image(img_f)
ws.add_image(img, 'A1')
except Exception, e:
print "[ERROR]%s:%s" % (type(e), e)
ws['A1'] = "程式化營銷平臺"
else:
ws['A1'] = "程式化營銷平臺"
font1 = Font(size=22)
ws['A1'].font = font1
ws['B4'] = ad_plan #等同ws.cell('B4') = ad_plan
ws['B5'] = ad_names
ws['B6'] = str(start_d) + ' to ' + str(end_d)
wb.save(report_file)
try:
wb = load_workbook(report_file)
ws = wb.get_sheet_by_name('frequency')
row = 9
for it in query_result:
one_row = it.split('\t')
print one_row
if '10' == one_row[0]:
one_row[0] = '10+'
col = 1
for one_cell in one_row:
ws.cell(row = row, column = col).value = one_cell
col = col + 1
row = row + 1
except Thrift.TException, tx:
print '[ERROR] %s' % (tx.message)
else:
wb.save(report_file)
finally:
pass
#
from openpyxl.writer.excel import ExcelWriter
wb1=Workbook()#新建工作簿
ewb1=ExcelWriter(workbook=wb1)#新建一個ExcelWriter,用來寫wb1
ws1=wb1.worksheets[0]#取得wb1的第一個工作表ws1
one_cell = ws1.cell(row = row, column = col).value
ws1.cell(row = row, column = col).value = one_cell
ewb1.save(filename=dest_filename)#儲存一定要有,否則不會有結果
相關推薦
python用openpyxl操作excel
python操作excel方法 1)自身有Win32 COM操作office但講不清楚,可能不支援誇平臺,linux是否能用不清楚,其他有專業處理模組,如下 2)xlrd:(讀excel)表,xlrd讀大表效率高於openpyxl 3)xlwt:(寫exce
windows下python裝openpyxl 操作 excel檔案 xlsx
今天想操作一下xlsx 檔案 存一些資料,在網上搗鼓了好久終於,功夫不負有心人終於讓我給找到了 安裝的方法很簡單 首先要下載兩個東西 http://pan.baidu.com/s/1qWNpnqO
python+xlrd+xlwt操作excel
xca 軟件下載 int() 獲取 shee def try 品牌 workbook 百度搜索:小強測試品牌 QQ群:522720170 介紹 xlrd(讀操作),xlwt(寫操作) 上述軟件下載後,分別解壓,之後在cmd命令下分別進入對應的目錄中運行 python se
Python 讀寫操作Excel —— 安裝第三方庫(xlrd、xlwt、xlutils)
保存數據 下載 實用 第三方 直接 install pytho 方法 xls 數據處理是 Python 的一大應用場景,而 Excel 則是最流行的數據處理軟件。因此用 Python 進行數據相關的工作時,難免要和 Excel 打交道。 如果僅僅是要以表單形式保存數據,可
Python學習筆記-操作excel
clas import 添加 後綴 宋體 div python print mil python操作excel:使用pip安裝即可 一、xlwt:寫excel import xlwt book = xlwt.Workbook() #新建一個exc
windows 平臺下 xlnt 結合visual studio 2017 用c++操作excel
安裝cmake Windows下載安裝xlnt git clone https://github.com/tfussell/xlnt.git cd xlnt mkdir build # git clone剛才下載的xlnt原始碼位置 F:\CODE\CPPC
Python 用win32讀取excel檔案的奇葩報錯
from datetime import datetime import urllib import win32com.client as win32 import sys import codecs
如何用openpyxl操作excel文件
#coding:utf-8 import sys from openpyxl import load_workbook from openpyxl import Workbook #發貨數量 needNum = 200 #sku號 skuStr = 'sku0001' #p
Python 用win32寫excel檔案的奇葩報錯
這是本人用Python寫多個excel檔案: 這是寫的過程所報的錯誤: 從上圖錯誤結果可以看到,寫了三個sheet之後就報錯了,而從上附圖中你應該知道我要寫十幾個sheet。問題在這裡了,因為每次新建一個sheet檔案,它一般會預設為你新建三個sheet頁面。而程式寫完
用jruby操作excel
一、下載jruby二進位制安裝包,解壓到相應的目錄下,並將其bin目錄新增到系統 的PATH變數中,則完成了安裝; 二、安裝java,完成安裝後建立系統變數JAVA_HOME,把java的安裝目錄設為其值; 三、在dos視窗中執行jirb_swing,出現相應的介面,那麼你的
關於用openpyxl處理excel,讀和寫的問題
首先我感覺openpyxl是不可以修改已經存在資料的Excel檔案的。我是一個新手,所以如果寫的不對,還請指出來。這個以後我也會慢慢修改裡面的東西,主要是給自己當做筆記使用的。這是我之前幫別人處理Excel表格寫的程式。import openpyxl import math
Python筆記(十四):操作excel openpyxl模塊
align pre 一行 color value colspan xls str 工作 (一) 常遇到的情況 就我自己來說,常遇到的情況可能就下面幾種: 讀取excel整個sheet頁的數據。 讀取指定行、列的數據 往一個空白的excel文檔寫數據 往一
Python openpyxl、pandas操作Excel方法簡介與具體實例
val 讀取 方法 條件 程序 消息提醒 one eat font 本篇重點講解windows系統下 Python3.5中第三方excel操作庫-openpyxl; 其實Python第三方庫有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至註明的數據分
openpyxl python 操作Excel表格
from openpyxl import Workbook # 例項一個Workbook wb = Workbook() # 啟用工作表 ws = wb.active # 資料可以直接賦值給單元格 ws['A1'] = 42 # 在下一行追加一行1,2,3 ws.append([1, 2, 3]) #
用Python操作Excel,實現班級成績的統計
本次是在原來有一定格式的Excel文件中補充成績。 安裝的模組:xlwt 、 xlrd 、xlutils xlrd的模組是隻用讀取xls檔案,不能寫檔案,同理xlwt,只(新建寫)不讀已有的xls, xlrd的用法: 開啟檔案: data =xlrd.open_workbook(fime_path+'0
python操作Excel檔案之openpyxl
安裝和配置 安裝openpyxl模組: pip install openpyxl 若想使用插入圖片的功能: pip install pillow 知識點講解 workbook 工作薄:一個Excel 檔案是一個工作薄 worksheet 工作表:一個工作薄
Python利用openpyxl來操作Excel(一)
最近一直在做專案裡的自動化的工作,為了是從繁瑣重複的勞動中掙脫出來,把精力用在資料分析上。自動化方面python是在好不過了,不過既然要提交報表, 就不免要美觀什麼的。pandas雖然很強大,但是無法對Excel完全操作,現學vba有點來不及。於是就找到這個openpyxl包,用python
用Python這樣操作Excel?值得一學,總有一天用得上
最近一直在做專案裡的自動化的工作,為了是從繁瑣重複的勞動中掙脫出來,把精力用在資料分析上。自動化方面python是在好不過了,不過既然要提交報表,就不免要美觀什麼的。pandas雖然很強大,但是無法對Excel完全操作,現學vba有點來不及。
Python利用openpyxl來操作Excel(一)
最近一直在做專案裡的自動化的工作,為了是從繁瑣重複的勞動中掙脫出來,把精力用在資料分析上。自動化方面python是在好不過了,不過既然要提交報表,就不免要美觀什麼的。pandas雖然很強大,但是無法對Excel完全操作,現學vba有點來不及。於是就找到這個openpyxl包,用python來修改Excel,礙
用Python這樣操作Excel?值得一學,總有一天用得上!
在這裡寫下這兩天的筆記和踩得坑,方面新手躲坑,也供自己日後查閱。如有問題,還請見諒並指出,多謝。 進群:960410445 即可獲取數十套PDF! 1from openpyxl import load_workbook