1. 程式人生 > >Python 3.4版本對於Excel表的操作

Python 3.4版本對於Excel表的操作

我們都知道在JAVA裡,我們可以使用POI來操作Excel檔案,在POI的API裡有HSSFWorkbook支援03版的excel的讀寫,有XSSFWorkbook是針對07以後的excel檔案的讀寫,那麼在python3.x(散仙使用的版本是python3.4)裡,我們應該如何操作excel。

首先在python3.4裡,我們可以使用新的python類庫,來支援3.x之後的讀寫excel

針對 03版excel(xls結尾的),我們可以使用xlrd讀,xlwt包來寫
針對 07版excel(xlsx結尾的),我們可以使用openpyxl來操作讀寫excel




下載完擴充套件的包庫之後,直接解壓某個目錄,然後執行命令進行安裝包系統的python類庫裡:

python setup.py install

核心程式碼,如下所示:
#讀取excel使用(支援03)
import xlrd
#寫入excel使用(支援03)
import xlwt3
#讀取execel使用(支援07)
from openpyxl import Workbook
#寫入excel使用(支援07)
from openpyxl import load_workbook


def showexcel(path):
    workbook=xlrd.open_workbook(path)
    sheets=workbook.sheet_names();
    #多個sheet時,採用下面的寫法列印
    #for sname in sheets:
        #print(sname)
    worksheet=workbook.sheet_by_name(sheets[0])
    #nrows=worksheet.nrows
    #nclows=worksheet.ncols
    for i in range(0,worksheet.nrows):
        row=worksheet.row(i)

        for j in range(0,worksheet.ncols):
            print(worksheet.cell_value(i,j),"\t",end="")

        print()



def writeexcel03(path):

    wb=xlwt3.Workbook()
    sheet=wb.add_sheet("xlwt3資料測試表")
    value = [["名稱", "hadoop程式設計實戰", "hbase程式設計實戰", "lucene程式設計實戰"], ["價格", "52.3", "45", "36"], ["出版社", "機械工業出版社", "人民郵電出版社", "華夏人民出版社"], ["中文版式", "中", "英", "英"]]
    for i in range(0,4):
        for j in range(0,len(value[i])):
            sheet.write(i,j,value[i][j])
    wb.save(path)
    print("寫入資料成功!")

def writeexcel07(path):

    wb=Workbook()
    #sheet=wb.add_sheet("xlwt3資料測試表")
    sheet=wb.create_sheet(0,"xlwt3資料測試表")

    value = [["名稱", "hadoop程式設計實戰", "hbase程式設計實戰", "lucene程式設計實戰"], ["價格", "52.3", "45", "36"], ["出版社", "機械工業出版社", "人民郵電出版社", "華夏人民出版社"], ["中文版式", "中", "英", "英"]]
    #for i in range(0,4):
        #for j in range(0,len(value[i])):
            #sheet.write(i,j,value[i][j])

            #sheet.append(value[i])
    sheet.cell(row = 1,column= 2).value="溫度"
    wb.save(path)
    print("寫入資料成功!")


def read07excel(path):
    wb2=load_workbook(path)
    #print(wb2.get_sheet_names())
    ws=wb2.get_sheet_by_name("詳單一")
    row=ws.get_highest_row()
    col=ws.get_highest_column()
    print("列數: ",ws.get_highest_column())
    print("行數: ",ws.get_highest_row())

    for i  in range(0,row):
        for j in range(0,col):
            print(ws.rows[i][j].value,"\t\t",end="")

        print()

    #print(ws.rows[0][0].value)
    #print(ws.rows[1][0].value)
    #print(ws.rows[0][1].value)






#excelpath=r"D://名稱.xlsx"
#writepath=r"D://書籍明細07.xlsx"
#writeexcel03(writepath)
#writeexcel07(writepath)

read07path="D://名稱.xlsx";


read03path=r"E:\同義詞詞庫.xls";
#read07excel(read07path)
#read07excel(read03path)
#showexcel(excelpath);
showexcel(read03path);


最後,分享三個格式數字和日期,以及隨機數生成3個小知識點

#浮點數格式化成百分比
pp="{:.1%}".format(0.2356)
print(pp)

#格式化日期
import  datetime
s=(2014,12,11,0,0,0)
d="%02d-%02d-%02d" % s[:3]
print(d)

#列印隨機數
import random
#浮點數隨機數
f=random.uniform(1.0,100)
#整數範圍隨機數
f1=random.randint(1,23)
print(f1)
print(f)


結果如下:
D:\python\python.exe D:/pythonide/pythonprojectworkspace/tnssolve/f.py
23.6%
2014-12-11
17
84.57222433948785

Process finished with exit code 0