• 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)
  • 相关阅读:
    hdu-1162 Eddy's picture---浮点数的MST
    hdu-3371 Connect the Cities---kruskal
    hdu-1879 继续畅通工程---确定部分边的MST
    hdu-1875 畅通工程再续---MST
    hdu1863 畅通工程---MST&连通
    hdu-1233 还是畅通工程---MST模板
    hdu-1232 畅通工程---并查集
    BZOJ3940: [Usaco2015 Feb]Censoring
    BZOJ2434: [Noi2011]阿狸的打字机
    BZOJ2938: [Poi2000]病毒
  • 原文地址:https://www.cnblogs.com/xxiong1031/p/6885629.html
Copyright © 2020-2023  润新知