精华内容
下载资源
问答
  • python读写Excel表格

    2020-07-10 16:43:22
    python读写Excel表格 python读写Excel表格其实就依赖两个库: python读excel——xlrd python写excel——xlwt 一. python读excel 1.先安装读表所需要的库 pip install xlrd 2.导入库,打开表格 improt xlrd #打开...

    python读写Excel表格

    python读写Excel表格其实就依赖两个库:

    • python读excel——xlrd
    • python写excel——xlwt

    一. python读excel

    1.先安装读表所需要的库

    pip install xlrd
    

    2.导入库,打开表格

    improt xlrd
    #打开文件
    table = xlrd.open_workbook("角色表.xlsx",'rb')
    

    3.找到指定工作簿

    ​ python获取工作簿方式:

    #方法一:通过索引
    sheet = table.sheets()[0]
    #方法二:通过索引获取表格
    sheet = table.sheet_by_index(0)
    #方法三:通过名字获取表格
    sheet = table.sheet_by_name('sheetname')
    

    4.获取工作簿行数、列数

    # 行数
    row_num = sheet.nrows
    # 列数
    col_num = sheet.ncols
    

    5.获取某行某列的值,i代表行数或者列数的索引(从0开始)

    # 获取某行的值
    row_values = sheet.row_values(i)
    # 获取某列的值
    col_values = sheet.col_values(i)
    

    6.读取某个单元格数据

    value = sheet.cell(i,j).value
    

    7.单元格内容类型

    excel单元格内容返回类型有5种ctype:

    • 0 : empty
    • 1 : string
    • 2 : number
    • 3 : date
    • 4 :boolean
    • 5 :error

    假如单元格类型为3(即date),输出为一串数字,需要进一步处理才能显示为日期格式,转换步骤如下:

    cell = sheet.cell(i,j)
    if cell.ctype == 3:
        date = xlrd.xldate_as_datetime(cell.value, 0)
        cell = date.strftime('%Y%m%d')
    

    from datetime import datetime
    if cell.ctype == 3:
        sCell = skin.cell_value(i,j)
        date = datetime(*xldate_as_tuple(sCell, 0))
        cell = date.strftime('%Y%m%d')
    

    二. python写excel

    1.安装xlwt

    pip install xlwt
    

    2.导入xlwt,创建工作簿

    import xlwt
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('test')
    

    3.写入数据

    worksheet.write(0,0,'hehe')
    

    4.存入到excel文件中

    workbook.save('test.xls')
    

    5.打开test.xls文件即可看到里面已经插入了test工作表,而且A1的内容为hehe。

    展开全文
  • python 读写Excel表格

    千次阅读 2019-09-30 15:53:34
    python 读写Excel表格 一绪论 python在处理日志等数据后,需要将结果保存下来。通常会选择将结果存储到Excel文件中。 在这里我们将介绍python读写Excel的两种方式 二、读写Excel两种方式对比 xlwt 方式 ...

    python 读写Excel表格

    一绪论

    python在处理日志等数据后,需要将结果保存下来。通常会选择将结果存储到Excel文件中。
    在这里我们将介绍python读写Excel的两种方式

    二、读写Excel两种方式对比

    xlwt 方式

    需要安装三个库文件 xlrd(读Excel)xlwt(写Excel)xlutils(修改Excel)
    使用 xlwt库操作Exccel表格,不能在已经存在的表格上修改数据,每次写数据都是创建一个新的Excel表格。由于他是先创建一个表格在写入数据,因此它支持Excel表格样式设计。
    xlutils库通过copy功能,复制一个excel进行数据修改。

    xlwings方式

    xlwings操作一个库文件就可以对Excel进行读写操作,适合在事先创建好的表格上进行读写及修改该数据操作。同时它也支持新创建一个表格。

    三、xlwings 安装

    xlwings安装支持两种方式,在线安装和离线安装。

    • 在线安装:pip install xlwings
    • 离线安装:不能上网的电脑可以下载离线安装包进行安装。下载地址:https://pypi.org/search/?q=xlwings
      1.打开上面的地址,在首页搜索框输入 xlwings 搜索即可显示安装包。
      搜索xlwings

    在这里插入图片描述
    在这里插入图片描述

    四、xlwings 读Excel

    xlwings库官方地址:https://docs.xlwings.org/en/stable/

    4.1、xlwings读写Excel简单demo
    import xlwings as xw
    class ExcelEdit:
        def ExcelRead(self):
            try:
                # 设置Excel打开属性,visible设置是否可视化,add_book表示是否新增Excel
                app = xw.App(visible=False, add_book=False)
                # 打开Excel文件
                table = app.books.open("D:/PythonWorkSpace/myexcel.xlsx")
                # 根据Sheet索引切换到指定Sheet,索引从0开始.切换到第一个sheet
                sheet1 = table.sheets[0]
                # 获取sheet使用的总行数
                nrows = sheet1.used_range.last_cell.row
                # 获取sheet使用的总列数
                ncols = sheet1.used_range.last_cell.column
                print('总行数',nrows)
                print("总列数",ncols)
    
                # 修改单元格值
                sheet1.range(1,1).value = 2
                value = sheet1.range((1, 1), (1, 10)).value
                print("读取表格数据",value)
                #保存Excel
                table.save("D:/PythonWorkSpace/myexcel.xlsx")
            except Exception as e:
                print("Excel文件读写异常信息:",e)
            finally:
                # 关闭Excel
                table.close()
                # 退出设置Excel属性
                app.quit()
                print("退出Excel程序")
    
    ex = ExcelEdit()
    ex.ExcelRead()
    
    4.2、xlwings操作Excel详细介绍
    **一、操作Excel工作薄**
    #设置Excel打开属性,visible设置是否可视化,add_book表示是否新增Excel
    app = xw.App(visible=False, add_book=False)
    #打开Excel文件
    table = app.books.open(Excel文件名称)
    #创建一个新的工作薄
    wb = app.books.add()
    wb.save(r'e:\test.xlsx')
     
    #关闭Excel
    table.close()
    #退出设置Excel属性
    app.quit()
    
    **二、选择Excel工作薄的sheet**
    
    #获取Excel文件中Sheet数量
    table.sheets.count
    
    #显示当前工作薄中所有的表单
    table.sheets
     
    #根据Sheet索引切换到指定Sheet,索引从0开始
    table.sheets[索引号]
     
    #根据Sheet名称切换到指定Sheet
    table.sheets[Sheet名称]
    
    #添加sheet
    ws = table.sheets.add('Sheet_name')
    
    #修改sheet名称
    ws.name = 'Sheet_name'
    
    #将所引用的表单设为活动表单
    ws.activate()
    
    #引用活动表单
    ws = table.sheets.active
    
    #删除表单
    wb.sheets('Sheet_name').delete()
    
    **三、遍历表单内容**
    #获取表单使用信息
    info = ws.used_range
    行数:nrows = info.last_cell.row
    列数:ncols = info.last_cell.column
    
    **四、读取sheet数据**
    #获取单元格值
    value = sheet.range(单元格坐标).value
    
    #获取第1行,第1列到第10列数据
    value = sheet.range((1, 1), (1, 10)).value
    value = sheet.range('A1:J1').value
    
    #获取第2行,第2列数据
    value = sheet.range(2,2).value
    value = sheet.range('B2').value
    
    #整行读取:
    value = sheet.range('A1').expand('right').value
    
    #整列读取:
    value = sheet.range('A1').expand('down').value
    
    #全部读取
    data = sheet.range('A1').expand().value
    
    **五、写入Excel**
    #在第1行,第1列到第10列写入数据
    #单元格data可以是元组、字符串表示的单坐标和区间坐标
    data = ['北京', '上海', '广州', '深圳', '香港', '澳门', '台湾']
    value = sheet.range((1, 1), (1, 10)).value = data
    #在第1行,第1列写入数据
    value = sheet.range((1, 1)).value = "AA"
    
    #向一行或者一列写入数据
    data = ['北京', '上海', '广州', '深圳', '香港', '澳门', '台湾']
    行:ws.range('A1').value = data
    列:ws.range('A1').options(transpose=True).value = data
    
    **六、删除数据**
    #删除指定单元格内容
    sheet.range('A1').clear()
    
    #全部清除
    sheet.clear()
    
    
    5、结合业务

    在上面基础模板上进行优化,将Excel根据不同的操作进行封装,分别实现打开表格、读写数据、关闭表格业务的封装。实现打开一次table,多次写入数据,最后关闭一次table。

    import xlwings as xw
    
    from src.WcsLog import WcsLog
    
    
    class ExcelEdit:
        def __init__(self,excelFile,excelSheet):
            # Excel文件路径
            self.excelFile = excelFile
            self.excelSheet = excelSheet
            self.app=False
            self.table=False
    
        def excelOpen(self):
            try:
                # 设置Excel打开属性,visible设置是否可视化,add_book表示是否新增Excel
                self.app = xw.App(visible=False, add_book=False)
                # 打开Excel文件
                self.table = self.app.books.open(self.excelFile)
                # 根据Sheet索引切换到指定Sheet,索引从0开始.切换到第一个sheet
                self.sheet1 = self.table.sheets[self.excelSheet]
                print("Excel文件打开:",self.excelFile)
                return True
            except Exception as e:
                print("Excel文件打开失败:",e)
                return False
    
    
        def excelWrite(self,dataValue,position):
            #写入sheet的数据
            dataValue = dataValue
            #写入sheet单元格坐标位置
            position = position
            try:
                # 单元格写入
                self.sheet1.range(position).value = dataValue
                print("写入"+str(position)+":"+str(dataValue))
            except Exception as e:
                print("Excel读写失败:", e)
    
        def excelClose(self):
            try:
                if(self.table):
                    # 保存Excel
                    self.table.save(self.excelFile)
            except Exception as e:
                print("Excel文件保存失败:", e)
            finally:
                if(self.table):
                # 关闭Excel
                    self.table.close()
                    print("关闭Excel")
                # 退出设置Excel属性
                if(self.app):
                    self.app.quit()
                    print("退出Excel程序")
        @staticmethod
        def excelDispatch(datafile,excelfile,sheet=0):
            # datafile 写入Excel的数据源
            # excelfile 操作的Excel目标文件
            # sheeet Excel文件的sheet表格
            # position 写入sheet单元格坐标位置
    
            ex = ExcelEdit(excelfile,sheet)
            if (ex.excelOpen()):
                for i in datafile:
                    dateValue = datafile[i]['date']
                    positionValue = datafile[i]['row'], date[i]['col']
                    ex.excelWrite(dateValue, positionValue)
            ex.excelClose()
    
    
    
    # tt = WcsLog()
    # listfile = tt.allLogs('D:/PythonWorkSpace/newlog/')
    #
    # date = tt.logAnalusis(listfile)
    
    datafile = date={'c': {'date': '[2019-09-28:23:11:35+0800]', 'row': 5, 'col': 1}, 'a': {'date': '[2019-09-28:23:09:40+0800]', 'row': 4, 'col': 1}, 'd': {'date': '[2019-09-28:23:09:56+0800]', 'row': 6, 'col': 1}}
    excelfile = "D:/PythonWorkSpace/my3.xlsx"
    ExcelEdit.excelDispatch(datafile,excelfile)
    
    
    展开全文
  • Python读写Excel表格

    2021-02-27 16:13:11
    python读取Excel表格: import xlrd def read_excel(): # 打开文件 wb = xlrd.open_workbook(r'test.xls') # 获取所有sheet的名字 print(wb.sheet_names()) # 获取第二个sheet的表名 sheet2 = wb.sheet_...

    python读取Excel表格:

    import xlrd
    
    
    def read_excel():
        # 打开文件
        wb = xlrd.open_workbook(r'test.xls')
        # 获取所有sheet的名字
        print(wb.sheet_names())
        # 获取第二个sheet的表名
        sheet2 = wb.sheet_names()[1]
        print("sheet2 = {}".format(sheet2))
        # sheet1索引从0开始,得到sheet1表的句柄
        sheet1 = wb.sheet_by_index(0)
        rowNum = sheet1.nrows
        colNum = sheet1.ncols
        print("rowNum = {}, colNum = {}".format(rowNum, colNum))
        # 获取某一个位置的数据
        c1_0 = sheet1.cell(1, 0).value
        print("c1_0 = {}".format(c1_0))
        # 1 ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
        print(sheet1.cell(1, 2).ctype)
        # 获取整行和整列的数据
        # 第二行数据
        row2 = sheet1.row_values(1)
        print("row2 = {}".format(row2))
        # 第二列数据
        cols2 = sheet1.col_values(2)
        print("cols2 = {}".format(cols2))
        # python读取excel中单元格内容为日期的方式
        # 返回类型有5种
        print("for循环:")
        for i in range(rowNum):
            # if sheet1.cell(i, 2).ctype == 1:
                # d = xlrd.xldate_as_tuple(sheet1.cell_value(i, 2), wb.datemode)
                # print(date(*d[:3]), end='')
            print(sheet1.cell(i, 2))
    
    # 输出如下:
    # ['我的第一个表', '第二个', '呵呵第三个']
    # sheet2 = 第二个
    # rowNum = 8, colNum = 3
    # c1_0 = w
    # 2
    # row2 = ['w', 's', 10.0]
    # cols2 = ['z', 10.0, 666.0, '2021年2月25日 02:06:25', 44252.0, 'x', 1, '']
    # for循环:
    # text:'z'
    # number:10.0
    # number:666.0
    # text:'2021年2月25日 02:06:25'
    # xldate:44252.0
    # text:'x'
    # bool:1
    # empty:''

    读取的Excel文件

     

    python写入Excel表格:

    import xlwt
    
    
    # 写入数据
    def write_excel():
        f = xlwt.Workbook()
        # 创建表sheet1
        sheet1 = f.add_sheet(u'sheet1', cell_overwrite_ok=True)
        # 如果是写入中文,则要用u'汉字'的形式。比如 sheet1.write(0,0, u'汉字')
        row0 = [u'业务', u'状态', u'北京', u'上海', u'广州', u'深圳', u'状态小计', u'合计']
        column0 = [u'机票', u'船票', u'火车票', u'汽车票', u'其他']
        status = [u'预定', u'出票', u'退票', u'业务小计']
        for i in range(0, len(row0)):
            sheet1.write(0, i, row0[i], set_style("Time New Roman", 220, True))
    
        # 合并单元格:
        # sheet1.write_merge(x, x + m, y, y + n, string, style)
        # x表示行,y表示列,m表示跨行个数,n表示跨列个数,string表示要写入的单元格内容,style表示单元格样式。
        i, j = 1, 0
        while i < 4 * len(column0):  # 控制循环:每次加4
            # 第一列
            sheet1.write_merge(i, i + 3, 0, 0, column0[j], set_style('Arial', 220, True))
            # 最后一列
            sheet1.write_merge(i, i + 3, 7, 7)
            i += 4
            j += 1
        sheet1.write_merge(21, 21, 0, 1, u'合计', set_style("Time New Roman", 220, True))
    
        i = 0
        while i < 4 * len(column0):  # 控制外层循环:每次加4
            for j in range(0, len(status)):  # 控制内层循环:设置每一行内容
                sheet1.write(i + j + 1, 1, status[j])
            i += 4
    
        # 创建sheet2
        sheet2 = f.add_sheet(u'sheet2',cell_overwrite_ok=True)
        row0 = [u'姓名', u'年龄', u'出生日期', u'爱好', u'关系']
        column0 = [u'UZI', u'Faker', u'大司马', u'PDD', u'冯提莫']
    
        # 生成第一行
        for i in range(0, len(row0)):
            sheet2.write(0, i, row0[i], set_style('Times New Roman', 220, True))
    
        # 生成第一列
        for i in range(0, len(column0)):
            sheet2.write(i + 1, 0, column0[i], set_style('Times New Roman', 220, True))
        f.save('data.xls')

    执行上面这个写入excel表格的函数后,会生成data.xls文件。

    写入表格1:

    写入表格1

    写入表格2:

    写入表格2

    展开全文
  • python读写excel表格,简单脚本实现有备注
  • Python 读写excel表格

    2020-09-26 15:05:17
    本篇参考了两篇博客并做了一点整理,厚着脸皮标了个原创 ...本实例从一份excel文件中读取并写入另一个文件中,话不多说,直接上代码: import xlrd import xlwt import datetime from xlrd import xldate_as_tuple

    本篇复制了以下两篇博客并做了一点整理,厚着脸皮标了个原创

    1. https://blog.csdn.net/asialee_bird/article/details/105497121
    2. https://www.cnblogs.com/ilovepython/p/11068841.html

    本实例从一份excel文件中读取并写入另一个文件中,话不多说,直接上代码:

    
    
    import xlrd
    import xlwt
    import datetime
    
    
    from xlrd import xldate_as_tuple
    
    
    '''
    xlrd中单元格的数据类型
    数字一律按浮点型输出,日期输出成一串小数,布尔型输出0或1,所以我们必须在程序中做判断处理转换
    成我们想要的数据类型
    0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
    '''
    
    
    class ExcelUtils():
    
        def __init__(self, file_path, sheet_name):
            #定义一个属性接收文件路径
            self.data_path = data_path
            self.sheet_name = sheet_name
            self.data = xlrd.open_workbook(self.data_path)
            self.table = self.data.sheet_by_name(self.sheet_name)
            self.keys = self.table.row_values(0)
            self.row_num = self.table.nrows
            self.col_num = self.table.ncols
    
    
        def read_excel_data(self):
    
            datas = []
            for i in range(1, self.row_num):
                for j in range(self.col_num):
                    # 获取单元格数据类型
                    c_type = self.table.cell(i,j).ctype
                    # 获取单元格数据
                    c_cell = self.table.cell_value(i, j)
    
                    if c_type == 2 and c_cell % 1 == 0:  # 如果是整形
                        c_cell = int(c_cell)
    
                    elif c_type == 3:
                        # 转成datetime对象
                        date = datetime.datetime(*xldate_as_tuple(c_cell,0))
                        c_cell = date.strftime('%Y/%d/%m %H:%M:%S')
    
                    elif c_type == 4:
                        c_cell = True if c_cell == 1 else False
                    
                    d = {
                        'i':i,
                        'j':j,
                        'value':c_cell
                    }
                    datas.append(d)
    
            return datas
    
    
    
    def save_data(datas):
    
        # 创建一个workbook 设置编码
        workbook = xlwt.Workbook(encoding='utf-8')
        worksheet = workbook.add_sheet('Sheet1')
     
        #字体样式设置
        style = xlwt.XFStyle()  # 初始化样式
        font = xlwt.Font()  # 为样式创建字体
        font.name = 'Times New Roman'
        font.height = 20 * 11  # 字体大小,11为字号,20为衡量单位
        font.bold = True  # 黑体
        font.underline = True  # 下划线
        font.italic = True  # 斜体字
        style.font = font  # 设定样式
    
        # 数据写入excel,参数对应 行, 列, 值
        worksheet.write(20, 0, 'test')
        worksheet.write(20, 1, 2)
    
        #设置单元格背景颜色
        pattern = xlwt.Pattern()
        pattern.pattern = xlwt.Pattern.SOLID_PATTERN
        pattern.pattern_fore_colour = 13
        style = xlwt.XFStyle()  # Create the Pattern
        style.pattern = pattern  # Add Pattern to Style
        worksheet.write(20, 2, 'color', style)
    
        # 边框
        borders = xlwt.Borders()
        borders.left = xlwt.Borders.DASHED   #DASHED虚线,NO_LINE没有,THIN实线
        borders.right = xlwt.Borders.DASHED  #borders.right=1 表示实线
        borders.top = xlwt.Borders.DASHED
        borders.bottom = xlwt.Borders.DASHED
        borders.left_colour=0x40
        borders.right_colour = 0x40
        borders.top_colour = 0x40
        borders.bottom_colour = 0x40
        style = xlwt.XFStyle()  # Create Style
        style.borders = borders  # Add Borders to Style
        worksheet.write(20, 3 , 'border1', style)
    
        
        #给单元格添加边框方法二
        # 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7,大粗虚线:8,细点划线:9,粗点划线:10,细双点划线:11,粗双点划线:12,斜点划线:13
        borders = xlwt.Borders()
        borders.left = 1    #设置为细实线
        borders.right = 1
        borders.top = 1
        borders.bottom = 1
        borders.left_colour = 2  #颜色设置为红色
        borders.right_colour = 2
        borders.top_colour = 2
        borders.bottom_colour = 2
        style = xlwt.XFStyle()  # Create Style
        style.borders = borders  # Add Borders to Style
        worksheet.write(20, 4, 'border2', style)
    
        # 写入时间
        style = xlwt.XFStyle()
        style.num_format_str = 'M/D/YY'  # Other options: D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0
        worksheet.write(20, 5, datetime.datetime.now(), style)
    
        # 添加公式
        worksheet.write(21, 1, xlwt.Formula('B1*C1')) 
        worksheet.write(21, 2, xlwt.Formula('SUM(B1,C1)'))
        
        # 合并
        worksheet.write_merge(20, 21, 10, 15, 'First Merge')   #合并20到21行的10到15列
    
        # 设置对齐方式
        alignment=xlwt.Alignment()
        alignment.horz=xlwt.Alignment.HORZ_CENTER
        alignment.vert=xlwt.Alignment.VERT_CENTER
        style=xlwt.XFStyle()
        style.alignment=alignment
        worksheet.write(20, 6, 'alignment', style)
    
        for data in datas:
            # print('i is {},j is {},value is {}'.format(data.get('i'),data.get('j'),data.get('value')))
            worksheet.write(data.get('i'),data.get('j'),data.get('value'))
        
    
        workbook.save('F:\\test\\data_test11.xls')
    
    
    
    if __name__ == "__main__":
        data_path = "F:\\test\\data_test.xls"
        sheetname = "Sheet1"
        get_data = ExcelUtils(data_path, sheetname)
        datas = get_data.read_excel_data()
        save_data(datas)
    
    展开全文
  • python读写excel表格

    2020-06-08 23:55:47
    1. 读取前n行所有数据 ... df = pd.read_excel('school.xlsx')#读取xlsx中第一个sheet data1 = df.head(7) # 读取前7行的所有数据,dataFrame结构 data2 = df.values #list形式,读取表格所有数据 print("获取到所有

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 692
精华内容 276
关键字:

python读写excel表格

python 订阅