首頁 >後端開發 >Python教學 >如何在python環境下操作excel

如何在python環境下操作excel

零到壹度
零到壹度原創
2018-04-14 10:36:051914瀏覽

這篇文章給大家分享的內容是如何在python環境下操作excel ,有著一定的參考價值,有需要的朋友可以參考一下

一、可使用的在第三方函式庫

python中處理excel表格,常用的函式庫有xlrd(讀excel)表、xlwt(寫excel)表、openpyxl(可讀寫excel表)等。 xlrd讀資料較大的excel表時效率高於openpyxl,所以我寫腳本時就採用了xlrd和xlwt這兩個函式庫。這些庫檔案都沒有提供修改現有excel表格內容的功能。一般只能將原excel的內容讀出、做完處理後,再寫入一個新的excel檔。

可以使用pip search excel 查看一下,可以看到更多的開發包。

二、常見問題

使用python處理excel表格時,發現兩個比較難纏的問題:unicode編碼和excel中記錄的時間。

因為python的預設字元編碼都是unicode,所以列印從excel讀出的中文或讀取中文名的excel表或sheet時,程式提示錯誤UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)。這是由於在windows中,中文使用了gb2312編碼方式,python將其當作unicode和ascii來解碼都不正確才報出的錯誤。使用VAR.encode(‘gb2312’)即可解決列印中文的問題。 (很奇怪,有的時候雖然能打印出結果,但顯示的不是中文,而是一堆編碼。)若要從中文文件名的excel表中讀取數據,可在文件名前加'u'表示將該中文檔名採用unicode編碼。

有excel中,時間和日期都使用浮點數表示。可看到,當'2013年3月20日'所在單元格使用'常規'格式表示後,內容變為'41353';當其單元格格式改變為日期後,內容又變為了'2013年3月20日'。而使用xlrd讀出excel的日期和時間後,得到是的一個浮點數。所以當在excel中寫入的日期和時間為一個浮點數也不要緊,只需將表格的表示方式改為日期和時間,即可得到正常的表示方式。 excel中,用浮點數1表示1899年12月31日。

三、常用函數

以下主要介紹xlrd、xlwt、datetime中與日期相關的函數。

import xlrdimport xlwtfrom datetimedef testXlrd(filename):
    book=xlrd.open_workbook(filename)
    sh=book.sheet_by_index(0)    print "Worksheet name(s): ",book.sheet_names()[0]    print 'book.nsheets',book.nsheets    print 'sh.name:',sh.name,'sh.nrows:',sh.nrows,'sh.ncols:',sh.ncols    print 'A1:',sh.cell_value(rowx=0,colx=1)    #如果A3的内容为中文
    print 'A2:',sh.cell_value(0,2).encode('gb2312')def testXlwt(filename):
    book=xlwt.Workbook()
    sheet1=book.add_sheet('hello')
    book.add_sheet('word')
    sheet1.write(0,0,'hello')
    sheet1.write(0,1,'world')
    row1 = sheet1.row(1)
    row1.write(0,'A2')
    row1.write(1,'B2')

    sheet1.col(0).width = 10000

    sheet2 = book.get_sheet(1)
    sheet2.row(0).write(0,'Sheet 2 A1')
    sheet2.row(0).write(1,'Sheet 2 B1')
    sheet2.flush_row_data()

    sheet2.write(1,0,'Sheet 2 A3')
    sheet2.col(0).width = 5000
    sheet2.col(0).hidden = True

    book.save(filename)if __name__=='__main__':
    testXlrd(u'你好。xls')
    testXlwt('helloWord.xls')
    base=datetime.date(1899,12,31).toordinal()
    tmp=datetime.date(2013,07,16).toordinal()    print datetime.date.fromordinal(tmp+base-1).weekday()

相關推薦:

使用Python處理Excel檔案

##Python處理Excel的模組

python各個操作excel模組的比較#

以上是如何在python環境下操作excel的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn