python讀寫excel(xlrd熙兔,xlwd)

用python讀寫excel需要導(dǎo)入xlrd(讀)件余,xlwd(寫)模塊:

前提準(zhǔn)備:

1.先pip安裝xlrd : >>pip install xlrd
pip安裝xlwt : >>pip install xlwt
安裝方法二:
豆瓣源安裝pip install -i https://pypi.douban.com/simple xlwt

xlrd:

2.xlrd :下面是我寫的一個(gè)讀取excel的類
excel表:


image.png

運(yùn)行結(jié)果:


image.png
import xlrd
import os


class ExcelReade(object):
    def __init__(self, excel_name, sheet_name):
        """
        # 我把excel放在工程包的data文件夾中:
        # 1.需要先獲取到工程文件的地址
        # 2.再找到excel的文件地址(比寫死的絕對(duì)路徑靈活)

            os.path.relpath(__file__)
            1.根據(jù)系統(tǒng)獲取絕對(duì)路徑
            2.會(huì)根據(jù)電腦系統(tǒng)自動(dòng)匹配路徑:mac路徑用/,windows路徑用\
            3.直接使用__file__方法是不會(huì)自動(dòng)適配環(huán)境的
        """
        # 獲取當(dāng)前.py文件所在文件夾層
        dir_path = os.path.dirname(os.path.realpath(__file__))
        # 再次向上獲取工程的文件夾層
        project_path = os.path.dirname(dir_path)
        # 獲取excel所在文件目錄
        self.excel_path = os.path.join(project_path, "data", excel_name)
        # 打開指定的excel文件
        self.date = xlrd.open_workbook(self.excel_path)
        # 找到指定的sheet頁
        self.table = self.date.sheet_by_name(sheet_name)
        self.rows = self.table.nrows  # 獲取總行數(shù)
        self.cols = self.table.ncols  # 獲取總列數(shù)

    def data_dict(self):
        if self.rows <= 1:
            print("總行數(shù)小于等于1,路徑:", end='')
            print(self.excel_path)
            return False
        else:
            # 將列表的第一行設(shè)置為字典的key值
            keys = self.table.row_values(0)
            # 定義一個(gè)數(shù)組
            data = []
            # 從第二行開始讀取數(shù)據(jù)攒至,循環(huán)rows(總行數(shù))-1次
            for i in range(1, self.rows):
                # 循環(huán)內(nèi)定義一個(gè)字典嘶居,每次循環(huán)都會(huì)清空
                dict = {}
                # 從第一列開始讀取數(shù)據(jù)罪帖,循環(huán)cols(總列數(shù))次
                for j in range(0, self.cols):
                    # 將value值關(guān)聯(lián)同一列的key值
                    dict[keys[j]] = self.table.row_values(i)[j]
                # 將關(guān)聯(lián)后的字典放到數(shù)組里
                data.append(dict)
            return data

if __name__ == '__main__':
    start = ExcelReade('student_data.xls', u'Sheet1')
    data = start.data_dict()
    
    for i in range(len(data)):
        print(data[i])

  • 還有一些能用到的方法:
    獲取單元格
        date = xlrd.open_workbook(excel_path)
        table = date.sheet_by_name(sheet_name)
        value = table.cell(1, 2).value  # 獲取第二行第三列單元格的值

我們填寫excel時(shí)可能會(huì)帶有一些肉眼難以發(fā)現(xiàn)的空格之類的,可以使用strip() 方法,用于移除字符串頭尾指定的字符(默認(rèn)為空格或換行符)或字符序列整袁。

  • 語法:str.strip([chars])
  • 參數(shù):chars -- 移除字符串頭尾指定的字符序列菠齿。
    [?] 注意:該方法只能刪除開頭或是結(jié)尾的字符,不能刪除中間部分的字符葬项。

xlwt:

xlwt:下面是我寫的一個(gè)覆蓋寫入的類:

import xlwt
import os

# excel的存放路徑
excel_path = r'C:\Users\zd\Desktop\test.xls'

class ExcelWrite(object):
    def __init__(self):
        self.excel = xlwt.Workbook()  # 創(chuàng)建一個(gè)工作簿
        self.sheet = self.excel.add_sheet('Sheet1')  # 創(chuàng)建一個(gè)工作表
    
    # 寫入單個(gè)值
    def write_value(self, cell, value):
        '''
            - cell: 傳入一個(gè)單元格坐標(biāo)參數(shù)泞当,例如:cell=(0,0),表示修改第一行第一列
        '''
        self.sheet.write(*cell, value)
        # (覆蓋寫入)要先用remove(),移動(dòng)到指定路徑,不然第二次在同一個(gè)路徑保存會(huì)報(bào)錯(cuò)
        os.remove(excel_path)
        self.excel.save(excel_path)
        
    # 寫入多個(gè)值
    def write_values(self, cells, values):
        '''
            - cells: 傳入一個(gè)單元格坐標(biāo)參數(shù)的list民珍,
            - values: 傳入一個(gè)修改值的list襟士,
            例如:cells = [(0, 0), (0, 1)],values = ('a', 'b')
            表示將列表第一行第一列和第一行第二列,分別修改為 a 和 b
        '''
        # 判斷坐標(biāo)參數(shù)和寫入值的數(shù)量是否相等
        if len(cells) == len(values):
            for i in range(len(values)):
                self.write_value(cells[i], values[i])
        else:
            print("傳參錯(cuò)誤,單元格:%i個(gè),寫入值:%i個(gè)" % (len(cells), len(values)))

if __name__ == '__main__':
    start = ExcelWrite()
    cells1 = [(0, 0), (0, 1)]
    values1 = ('飛豬', '哈哈')
    start.write_values(cells1, values1)

運(yùn)行結(jié)果:


image.png

更多:python修改已經(jīng)存在的excel表

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嚷量,一起剝皮案震驚了整個(gè)濱河市陋桂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝶溶,老刑警劉巖嗜历,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異抖所,居然都是意外死亡梨州,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門田轧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暴匠,“玉大人,你說我怎么就攤上這事傻粘∶拷眩” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵弦悉,是天一觀的道長(zhǎng)窒典。 經(jīng)常有香客問我,道長(zhǎng)稽莉,這世上最難降的妖魔是什么瀑志? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮污秆,結(jié)果婚禮上后室,老公的妹妹穿的比我還像新娘。我一直安慰自己混狠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布疾层。 她就那樣靜靜地躺著将饺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上予弧,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天刮吧,我揣著相機(jī)與錄音,去河邊找鬼掖蛤。 笑死杀捻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚓庭。 我是一名探鬼主播致讥,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼器赞!你這毒婦竟也來了垢袱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤港柜,失蹤者是張志新(化名)和其女友劉穎请契,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夏醉,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爽锥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了畔柔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氯夷。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖释树,靈堂內(nèi)的尸體忽然破棺而出肠槽,到底是詐尸還是另有隱情,我是刑警寧澤奢啥,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布秸仙,位于F島的核電站,受9級(jí)特大地震影響桩盲,放射性物質(zhì)發(fā)生泄漏寂纪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一赌结、第九天 我趴在偏房一處隱蔽的房頂上張望捞蛋。 院中可真熱鬧,春花似錦柬姚、人聲如沸拟杉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搬设。三九已至穴店,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拿穴,已是汗流浹背泣洞。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留默色,地道東北人球凰。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像腿宰,于是被迫代替她去往敵國(guó)和親呕诉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350