如何在Python中創建Excel表格


之前在學習os模塊中,我們知道了如何創建一個txt格式的文件(具體操作見https://mp.csdn.net/postedit/80903024)

 

但是當我們爬取一些小說或一些圖片時,我們需要分類管理這些數據,這時候文件似乎無法直接描述出這些數據的關系,那么我們就需要創建一個Excel表格了

 

創建Excel表格一般有兩種方法:

一:通過導入xlwt庫來創建,這種是最常規的方法,不過相對也比較麻煩

二:通過導入csv庫來創建

 

接下來我們具體操作一下

一:使用xlwt庫

import xlwt
work_book=xlwt.Workbook(encoding='utf-8')
sheet=work_book.add_sheet('sheet表名')
sheet.write(0,0,'第一行第一列')
sheet.write(0,1,'第一行第二列')
work_book.save('Excel表.xls')

這種方法創建Excel表的過程很直觀,也很好理解,這里來逐行解釋一下

1   導入xlwt庫

2   創建工作表對象,並設置編碼格式為utf-8

3   添加一個sheet表,參數為sheet的表名

4   sheet.write()是寫入內容的方法

     參數一:表示行數

     參數二:表示列數

     參數三:表示要寫入的內容

6   保存Excel表,注意表名后面要加.xls后綴

 

二、使用csv庫

csv全稱:comma sepreated value 逗號分割值

使用csv創建Excel表與os創建txt文件形式上差不多,因為使用csv的話系統會直接以Excel表的形式幫你保存數據

不需要你額外再創建Excel表

不過csv創建的Excel表格並不完全算是.xls文件,它與平常的.xls文件有以下幾種不同:

1.由於是純文本,所以所有的值均為字符串類型

2.無法進行字體操作和單元格操作,比如無法改變字體大小,顏色等,無法改變單元格的大小等

3.無法創建多個工作表

4.無法嵌入圖片

 

1.寫入數據

這里依舊先放代碼:

注意看rows和rows1的區別

按照rows1的寫法數據存入的時候會被修改,所以這種寫法雖然沒有語法錯誤,但實際執行的時候這種寫法是錯誤的

import csv
rows=[['張三',123,'abc'],['李四',456,'xyz'],['王五',789,'ij']]
rows1=['張三123','李四456','王五789']

csv文件在寫入的時候,默認每次寫入時會有一個空行作為分割,使用newline=''會把空行去掉
with open('test1.csv','w',newline='')as csv_file:
    # 獲取一個csv對象進行內容寫入
    writer=csv.writer(csv_file)
    for row in rows:
        # writerow 寫入一行數據
        writer.writerow(row)
    # 寫入多行
    writer.writerows(rows)
    writer1=csv.writer(csv_file)
    for row1 in rows1:
        writer1.writerow(row1)

輸出結果:

 

關於其中的代碼我解釋一下:

with open('test1.csv','w',newline='')as csv_file:

open():打開一個文件
test1.csv:  創建一個名字為test1的csv格式的文件,csv格式就是Excel表

'w' : 寫入內容 ,同樣的還有  'r':讀取內容     'a':追加寫入內容

newline=''  :去掉空行 ,大家有空的話可以試試不寫newline=''的效果,這里就不演示了

writer.writerows(rows)

這行代碼是同時寫入多行,效果與逐行寫入一樣

 

2.讀取數據

以上面這個test1.csv文件為例:

with open('test1.csv','r')as read_file:
    # 獲取一個csv對象進行內容讀取
    reader=csv.reader(read_file)
    print(reader)
    print(list(reader))

輸出結果:

<_csv.reader object at 0x02156AB0>
[['張三', '123', 'abc'], ['李四', '456', 'xyz'], ['王五', '789', 'ij'], ['張三', '123', 'abc'], ['李四', '456', 'xyz'], ['王五', '789', 'ij'], ['張', '三', '1', '2', '3'], ['李', '四', '4', '5', '6'], ['王', '五', '7', '8', '9']]


注意:如果直接打印reader的話,會顯示一個地址

因為結果最外層是list形式,所以要把reader轉換成list類型

 

DictWriter 和 DictReader

DictWriter:寫入字典類型的數據

headers=['name','age']
data_dic=[{'name':'一','age':'15'},{'name':'二','age':'25'}]
with open('dict.csv','w',newline='')as csv_file:
    # 寫入一個字典到csv(excel)中,fieldnames設置excel的表頭
    writer=csv.DictWriter(csv_file,fieldnames=headers)
    # 開始寫入標題
    writer.writeheader()
    for dict in data_dic:
        writer.writerow(dict)
        print(dict)
    writer.writerows(data_dic)

寫法多了一行寫入標題,創建writer的時候多了一個參數,其余並沒有多大區別

 

DictReader:讀取字典類型的數據

with open('dict.csv','r')as csv_file:
    reader=csv.DictReader(csv_file)
    print(list(reader))

輸出結果:

[OrderedDict([('name', '一'), ('age', '15')]), OrderedDict([('name', '二'), ('age', '25')])]

這里的結果並不是常規的字典格式

 

 

這就是python中創建Excel表的兩種方法,小伙伴們學會了嗎?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM