python如何处理csv和xlsx数据

540 阅读1分钟

处理csv数据

通过csv.DictReader实现 示例代码

#读取csv文件
import csv
with open('name.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        #循环打印数据的id和class值,此循环执行7次
        print(row['id'],row['class'])

1 2
3 4
#写入csv文件
import csv
datas = [[1,2],[3,4]]
with open('name.csv','w') as csvfile:
    writer = csv.DictWriter(csvfile,fieldnames=['id','class'])
    #写入列标题,即DictWriter构造方法的fieldnames参数
    writer.writeheader()
    for data in datas:
        writer.writerow({'id':data[0],'class':data[1]})

处理xlsx数据

使用openpyxl包处理xlsx文件

Excel文件有三层对象:工作薄、工作表和单元格,分别对应openpyxl包中的workbook、sheet和cell。

import openpyxl
class HandExcel:
    def load_excel(self):
        '''
        加载excel
        '''

        open_excel = openpyxl.load_workbook("test.xlsx")
        return open_excel

    def get_sheet_data(self,index=None):
        '''
        加载所有sheet的内容
        '''
        sheet_name = self.load_excel().sheetnames
        if index == None:
            index = 0
        data = self.load_excel()[sheet_name[index]]
        return data
    
    def get_cell_value(self,row,cols):
        '''
        获取某一个单元格内容
        '''
        data = self.get_sheet_data().cell(row=row,column=cols).value
        return data
    
    def get_rows(self):
        '''
        获取行数
        '''
        row = self.get_sheet_data().max_row
        return row
    
    def get_rows_value(self,row):
        '''
        获取某一行的内容
        '''
        row_list = []
        for i in self.get_sheet_data()[row]:
            row_list.append(i.value)
        return row_list


    def excel_write_data(self,row,cols,value):
        '''
        写入数据
        '''
        wb = self.load_excel()
        wr = wb.active
        wr.cell(row,cols,value)
        wb.save("test.xlsx")


    def get_columns_value(self,key=None):
        '''
        获取某一列得数据
        '''
        columns_list = []
        if key==None:
            key = 'A'
        columns_list_data = self.get_sheet_data()[key]
        for i in columns_list_data:
            columns_list.append(i.value)
        return columns_list

    def get_rows_number(self,case_id):
        '''
        获取行号
        '''
        num = 1
        cols_data = self.get_columns_value()
        for col_data in cols_data:
            if case_id == col_data:
                return num
            num = num+1
        return num
    
    def get_excel_data(self):
        '''
        获取excel里面所有的数据
        '''
        data_list = []
        for i in range(self.get_rows()):
            data_list.append(self.get_rows_value(i+2))
        
        return data_list
excel_data = HandExcel()

if __name__ == "__main__":
    handle = HandExcel()
    print(handle.get_excel_data())
    
    
打印结果
[[1, 2], [3, 4], [None, None]]