Python对Excel进行读写

Python对Excel进行读写,第1张

概述Python对Excel进行读写

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

#Coding:utf=8__author__ = 'ZZ'import osimport natsortfrom operator import itemgetterfrom datetime import datetime,timedeltafrom xlrd import open_workbook,cellname,xldate_as_tuple,error_text_from_codefrom xlwt import easyxf,Workbookfrom xlutils.copy import copyfrom version import VERSION_version_ = VERSIONclass ExcelDriverlibrary:    def __init__(self):        self.wb = None        self.rb = None        self.PID = None        self.rowIndex = None        self.sheetNum = None        self.Sheetnames = None        self.filename = None    def open_excel(self,filename):        tempDir = 'D:\Codes\PycharmProjects\ExcelDataDriver\Resfile\'        # filename = 'Testfile.xls'        try:            if filename.find(':')==1:                self.rb = open_workbook(filename,formatting_info=True)            else:                print 'opening file at %s' % filename                #self.wb = open_workbook(os.path.join("/",self.tmpDir,filename),formatting_info=True,on_demand=True)                self.rb = open_workbook(os.path.join(tempDir,on_demand=True)                filename = os.path.join(tempDir,filename)            self.filename = filename            self.Sheetnames = self.rb.sheet_names        except Exception,e:            print str(e)    def get_sheet_names(self):        Sheetnames = self.rb.sheet_names()        return Sheetnames    def get_number_of_sheets(self):        sheetNum = self.rb.nsheets        return sheetNum    def get_column_count(self,Sheetname):        sheet = self.rb.sheet_by_name(Sheetname)        return sheet.ncols    def get_row_count(self,Sheetname):        sheet = self.rb.sheet_by_name(Sheetname)        return sheet.nrows    def get_column_values(self,Sheetname,column,includeEmptyCells=True):        sheet = self.rb.sheet_by_name(Sheetname)        data = {}        for row_index in range(sheet.nrows):            cell = cellname(row_index,int(column))            value = sheet.cell(row_index,int(column)).value            data[cell] = value        if includeEmptyCells is True:            sortedData = natsort.natsorted(data.items(),key=itemgetter(0))            return sortedData        else:            data = dict([(k,v) for (k,v) in data.items() if v])            OrderedData = natsort.natsorted(data.items(),key=itemgetter(0))            return OrderedData    def get_row_values(self,row,includeEmptyCells=True):        sheet = self.rb.sheet_by_name(Sheetname)        data = {}        for col_index in range(sheet.ncols):            cell = cellname(int(row),col_index)            value = sheet.cell(int(row),col_index).value            data[cell] = value        if includeEmptyCells is True:            sortedData = natsort.natsorted(data.items(),key=itemgetter(0))            return OrderedData    def get_sheet_values(self,includeEmptyCells=True):        sheet = self.rb.sheet_by_name(Sheetname)        data = {}        for row_index in range(sheet.nrows):            for col_index in range(sheet.ncols):                cell = cellname(row_index,col_index)                value = sheet.cell(row_index,col_index).value                data[cell] = value        if includeEmptyCells is True:            sortedData = natsort.natsorted(data.items(),key=itemgetter(0))            return OrderedData    def get_workboot_value(self,includeEmptyCells=True):               sheetData = []        workbookData = []        for sheet_name in self.Sheetnames:            if includeEmptyCells is True:                sheetData = self.get_sheet_values(sheet_name)            else:                sheetData = self.get_sheet_values(sheet_name,False)            sheetData.insert(0,sheet_name)            workbookData.append(sheetData)        return workbookData    def read_cell_data_by_name(self,cell_name):        """        Uses the cell name to return the data from that cell.        sheet = self.rb.sheet_by_name(Sheetname)        for row_index in range(sheet.nrows):            for col_index in range(sheet.ncols):                cell = cellname(row_index,col_index)                if cell_name ==cell:                    cellValue = sheet.cell(row_index,col_index).value        return cellValue    def read_cell_data_by_coordinates(self,row):        Uses the column and row to return the data from that cell.        my_sheet_index = self.Sheetnames.index(Sheetname)        sheet = self.rb.sheet_by_index(my_sheet_index)        cellValue = sheet.cell(int(row),int(column)).value        return cellValue    def Get_Sheet_Index(self,Sheetname):        sheetnum = self.get_number_of_sheets()        for sheet_index in range(sheetnum):            Current_Sheetname =  self.rb.sheet_names()[sheet_index]            if Sheetname == Current_Sheetname.encode('gb2312').decode('gb2312'):                return sheet_index    def Get_Cell_Data_By_PID(self,PID,Cellname):        sheet = self.rb.sheet_by_name(Sheetname)        for row_index in range(sheet.nrows):            Cell_Value = sheet.cell(int(row_index),0).value            if PID == Cell_Value:                break        for col_index in range(sheet.ncols):            Cell_TitValue = sheet.cell(0,int(col_index)).value            if Cellname == Cell_TitValue:                break        cellValue = sheet.cell(row_index,col_index).value        return cellValue    def Modify_index_cell(self,Cellname,CellValue):        Cellname_index = self._get_Cellname_index(Cellname,Sheetname)        PID_index = self._get_PID_index(PID,Sheetname)        rb = open_workbook(self.filename,formatting_info=True)        try:            sheet_index = rb._sheet_names.index(Sheetname)        except Exception,e:            print u'请输入正确的Sheet名,如果是中文,记得在变量名前面加u.具体错误消息为:',e            exit()        wb =copy(rb)        sheet = wb.get_sheet(sheet_index)        sheet.write(PID_index,Cellname_index,CellValue)        wb.save(self.filename)

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的Python对Excel进行读写全部内容,希望文章能够帮你解决Python对Excel进行读写所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1198698.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存