python讀寫excel


 python讀寫excel: 

# coding=utf-8
import xlrd
import xlwt
import traceback
from xlutils.copy import copy
import sys

reload(sys)
# 需要加上,否則會報UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
sys.setdefaultencoding('utf-8')


class ExcelAction:
    '''
    只支持xls格式
    '''

    def transCode(self, filename, sheetname):
        filename = filename.decode('utf-8')
        sheetname = sheetname.decode('utf-8')
        return filename, sheetname

    def read_excel(self, filename, sheetname):
        '''
        讀取excel
        '''
        filename, sheetname = self.transCode(filename, sheetname)
        workbook = xlrd.open_workbook(filename)  # 獲得工作薄
        sheet = workbook.sheet_by_name(sheetname)  # 獲得sheet
        rows = sheet.nrows  # 文件總行數
        list = []
        print u'-------文件內容-------'
        for i in range(0, rows):
            line = sheet.row_values(i)  # 獲得一行的值,返回列表
            list.append(line)
            # 避免打印包含中文的列表時變成unicode
            print '[' + ','.join("'" + str(element) + "'" for element in line) + ']'
        print u'-----------------------'
        return list

    def write_excel(self, filename, sheetname, row, col, value, type=0):
        '''
        修改excel
        '''
        filename, sheetname = self.transCode(filename, sheetname)
        # 轉成整形是因為要在ride中使用,ride把參數傳過來默認是字符串,除非這樣傳${1}
        row = int(row)
        col = int(col)
        type = int(type)
        # formatting_info=True保存之前數據的格式
        rb = xlrd.open_workbook(filename, formatting_info=True)
        wb = copy(rb)
        sheet = wb.get_sheet(sheetname)
        # 設置樣式,寫入的文字為紅色加粗
        style = xlwt.easyxf('font: bold 1, color red;')
        if type == 1:
            sheet.write(row, col, value, style)
        else:
            sheet.write(row, col, value)
        wb.save(filename)

    def addSheet(self, filename, sheetname, row, valueList):
        '''
        寫入excel,一次寫一行
        '''
        filename, sheetname = self.transCode(filename, sheetname)

        wb = xlwt.Workbook(filename)
        # 其實會覆蓋第一個sheet頁
        sheet = wb.add_sheet(sheetname)
        for i in range(len(valueList)):
            # 需要轉碼
            valueList[i] = str(valueList[i]).decode('utf-8')
            sheet.write(row, i, valueList[i])
        wb.save(filename)


if __name__ == '__main__':
    ea = ExcelAction()
    filename = r'G:\測試數據\最后的騎士.xls'
    sheetname = '第1頁'
    list = ea.read_excel(filename, sheetname)
    # ea.write_excel(filename, sheetname, 0, 0, 'Optimus Prime')
    # ea.write_excel(filename, sheetname, 0, 1, 'Megatron', 1)
    # valueList = ['阿杜 - 爛好人', '阿杜 - 一諾千年', 'Coldplay - Hypnotised', 'Ruth B. - Superficial Love', '楊宗緯、張碧晨 - 涼涼']
    # ea.addSheet(filename, '第2頁', 0, valueList)

 


免責聲明!

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



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