転送:https://blog.csdn.net/Cloudox_/article/details/53812213
インストールライブラリ
Python環境
まず、環境と当然、しかし選挙のPythonが重要な理由は、追加の構成環境は、Windowsシステムを使用している場合、あなたも設定する必要があり、作業の合計を保存していないMacがPython環境内に構築されていることですPython環境はPython 2.7の私のMac版について。
サードパーティのライブラリ
Pythonは、独自の直接操作Excelでサポートされていますが、簡単に多数の動作させるために、我々はxlwt図書館のxlrdのExcelのライブラリーを読み書きするために、Excelを使用してサードパーティ製のライブラリを使用するということではPythonのパワーされていません。
サードパーティのライブラリのインストールは非常に簡単で、まず第一に、ソースPythonライブラリのダウンロード2つのライブラリをダウンロードするには、特別なWebサイトにアクセスしてください:
* xlrdダウンロード
* ダウンロードxlwt
注手始めに、最も簡単な方法は、元のインストールをインストールすることで、2つのライブラリをダウンロードするには、ソースコードをクリックして、サードパーティのライブラリ・マネージャをトスする必要はありません。
あなたは彼が後にも事のタイプはソースで記述参照してください。
:一度ダウンロードしたフォルダを取得するためには良いのMacを解凍し、あなたがsetup.pyファイルがある見ることができます
確かにここにいないだけでダブルクリックしてインストール、PYタイプは、単にコードを参照するファイルを開くにはダブルクリックして、それはPythonのコードファイルであることを示しています。私たちは、端末を使用する場合は、例えば、私は「ダウンロード」上のファイルを入れて、現在のフォルダ内のファイルにコマンド番号を入力し、練習は次のようになります。
$ cd Downloads/
$ cd xlwt-1.1.2
$ sudo python setup.py install
- 1
- 2
- 3
Cdが、ここで言葉を使用せずにパイソンが実行され、キャリッジリターンを入力し、お使いのコンピュータのパスワードを入力するように要求されます入力して、あなたに何の権利を教えてくれないだろう、フォルダへのアクセス、sudoはインストールするには、管理者権限で意味あることを意味しますコマンドのpythonコードファイル、インストールされているをインストールしてください。
そして、過去に言葉の束を見て、最終的にはあなたが終わっ言うbrush'll磨く、それはインストールが完了し、です。
xlrdは、同じインストールです。
コードを書きます
読むとExcelのサードパーティのライブラリがインストールされている書き込みは、コードを書き始めることができます。
Hello.py我々は、フォルダ内のファイルを作成し、その後、文書エディタのような崇高で開き、コードを書き始めます。(PS:#の初めにPythonはコメントを表します)
Excelを読みます
# -*- coding: utf-8 -*-
import xdrlib ,sys
import xlrd
#打开excel文件
def open_excel(file= 'test.xlsx'):
try:
data = xlrd.open_workbook(file)
return data
except Exception,e:
print str(e)
#根据名称获取Excel表格中的数据 参数:file:Excel文件路径 colnameindex:表头列名所在行的索引 ,by_name:Sheet1名称
def excel_table_byname(file= 'test.xlsx', colnameindex=0, by_name=u'Sheet1'):
data = open_excel(file) #打开excel文件
table = data.sheet_by_name(by_name) #根据sheet名字来获取excel中的sheet
nrows = table.nrows #行数
colnames = table.row_values(colnameindex) #某一行数据
list =[] #装读取结果的序列
for rownum in range(0, nrows): #遍历每一行的内容
row = table.row_values(rownum) #根据行号获取行
if row: #如果行存在
app = [] #一行的内容
for i in range(len(colnames)): #一列列地读取行的内容
app.append(row[i])
list.append(app) #装载数据
return list
#主函数
def main():
tables = excel_table_byname()
for row in tables:
print row
if __name__=="__main__":
main()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
このコードは、私は多くのコメントがあり、その後、我々はExcelを読み取るために、その機能を使用するために、パッケージをxlrdインポートするために覚えておく必要があり、我々はutp8コーディングを設定し、すべての非常に最初の最初、注意すべきいくつかの場所について話しています。メイン()内の主な機能である、Pythonは残りのデータを読み取るための関数を呼び出して、この機能を実行します。このコードは、Sheet1の表にし、絶版ラインExcelファイルtest.xlsxによるデータ読み取りラインを実装しています。
次のようにExcelは、読み取ります。
二行があります。
このコードを実行するには、ファイルコード、コード、およびExcelファイルがこのフォルダに配置する必要があるフォルダへのコマンドライン・ターミナル、最初のCDを使用する必要があります。そして、このコードファイルを実行するために、Pythonのhello.pyコマンドを使用します。
これらは、Excelと一致しているuはUnicodeのエンコーディングが使用されている示し、あなたが見ることができ、Pythonは読み、内容をプリントアウトしています。
Excelを作成します
我々はExcelを作成することができますxlwtライブラリを使用します。
# -*- coding: utf-8 -*-
import xlwt
def testXlwt(file = 'new.xls'):
book = xlwt.Workbook() #创建一个Excel
sheet1 = book.add_sheet('hello') #在其中创建一个名为hello的sheet
sheet1.write(0,0,'cloudox') #往sheet里第一行第一列写一个数据
sheet1.write(1,0,'ox') #往sheet里第二行第一列写一个数据
book.save(file) #创建保存文件
#主函数
def main():
testXlwt()
if __name__=="__main__":
main()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
このコードは単純であり、また、最初にライブラリをインポートすることを忘れないでください。
私たちは、ファイルを保存するために私たちの姓に基づいて、二つのデータを書き込み、シートに追加し、優れたコードを作成しました。
上記のコードを実行するために、同じ方法によれば、端末は印刷する内容ではありませんが、我々は、Excelファイルの名前new.xlsを見ることになる新しいフォルダに行き、見ることができます開きます。
シート名がハローである一方で、データの書き込みの私達の方法によります。
記述xlwtライブラリで、このような言葉があることは注目に値します。
Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.6, 3.3+
也就是说,它只能创建 xls 的文件格式,不能创建现在的 xlsx 格式,其实有点老了,如果你把文件名写了 xlsx 格式,将会无法打开。
处理Excel内容
其实单独的读和写只是基本功,我们最终是想要处理Excel中的内容的。
这里我们假设一个使用场景,我们希望将Excel中所有第一列和第二列相同的行数据筛选出来保存到一个新的Excel中去。
那么我们的流程是:
- 打开目标Excel
- 读取内容
- 读取每一行的同时筛选第一列和第二列相等的行保留下来
- 创建一个新Excel
- 将筛选出来的内容写进去
- 保存新Excel
那么我们看代码:
# -*- coding: utf-8 -*-
import xdrlib ,sys
import xlrd
import xlwt
#打开excel文件
def open_excel(file= 'test.xlsx'):
try:
data = xlrd.open_workbook(file)
return data
except Exception,e:
print str(e)
#根据索引获取Excel表格中的数据 参数:file:Excel文件路径 colnameindex:表头列名所在行的索引 ,by_index:表的索引
def excel_table_byindex(file= 'test.xlsx',colnameindex=0,by_index=0):
data = open_excel(file) #打开excel文件
table = data.sheets()[by_index] #根据sheet序号来获取excel中的sheet
nrows = table.nrows #行数
ncols = table.ncols #列数
colnames = table.row_values(colnameindex) #某一行数据
list =[] #装读取结果的序列
for rownum in range(0,nrows): #遍历每一行的内容
row = table.row_values(rownum) #根据行号获取行
if row: #如果行存在
app = [] #一行的内容
for i in range(len(colnames)): #一列列地读取行的内容
app.append(row[i])
if app[0] == app[1] : #如果这一行的第一个和第二个数据相同才将其装载到最终的list中
list.append(app)
testXlwt('new.xls', list) #调用写函数,讲list内容写到一个新文件中
return list
#将list中的内容写入一个新的file文件
def testXlwt(file = 'new.xls', list = []):
book = xlwt.Workbook() #创建一个Excel
sheet1 = book.add_sheet('hello') #在其中创建一个名为hello的sheet
i = 0 #行序号
for app in list : #遍历list每一行
j = 0 #列序号
for x in app : #遍历该行中的每个内容(也就是每一列的)
sheet1.write(i, j, x) #在新sheet中的第i行第j列写入读取到的x值
j = j+1 #列号递增
i = i+1 #行号递增
# sheet1.write(0,0,'cloudox') #往sheet里第一行第一列写一个数据
# sheet1.write(1,0,'ox') #往sheet里第二行第一列写一个数据
book.save(file) #创建保存文件
#主函数
def main():
tables = excel_table_byindex()
for row in tables:
print row
if __name__=="__main__":
main()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
这次我们开头要导入xlrd和xlwt两个库,因为既要读也要写。
代码内容基本与上面两个差不多,有一点点加深,在读取的时候我们判断了第一列和第二列数据相同的行才加到list中去。在写的时候我们用了两个for循环来对新excel中的一个个单元格写数据,使用了i和j两个变量来记录位置。此外在获取sheet的时候,与上面的不同,这里是通过sheet的序号(这里是0)来获取的,上面的是通过sheet名称来获取。
我们要处理的Excel中的内容是这样的:
按道理我们筛选后只应该保留第一行的内容,运行完后我们得到了一个新的Excel文件,里面的内容如下:
可以看到和预期是相符的。
结
这里只是简单的例子,两个库的操作还有很多,能够进行的处理也有很多,如果要处理大量数据,可能还要考虑内存,分批次来处理,总之,本文只是一个入门,尽量追求零基础也能学着使用来解放劳动力,更多的用法,就看自己琢磨了。
可以下载我的示例工程:https://github.com/Cloudox/PYReadWriteExcelDemo