• python操作excel方法示例


    1.python处理Excel的几种方法:

    方法一:利用pandas、
    方法二、xlrd和xlwt两个模块分别用来读Excel和写Excel,只支持.xls和.xlsx格式,xlutils模块可以同时读写一个已存在的Excel文件,依赖于xlrd和xlwt
    方法三、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls结尾的文件,需要使用xlrd(读)和xlwt(写)库进行操作

    当然还有其它包。
    备注:

    1、Python自带的csv模块可以处理.csv文件。

    2、excel表的文字编码如果是“gb2312” 读取后就会显示乱码,请先转成Unicode
    3、workbook: 工作簿,一个excel文件包含多个sheet。
    4、sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。
    5、cell: 单元格,存储数据对象
    6、Python读取Excel中单元格的内容返回的有5种类型,即sheet.cell(x,y)的ctype属性返回的是数值型:ctype :  0 empty,1 string,2 number, 3 date,4 boolean,5 error

    2、用xlrd包读取Excel文件

    用法示例:

    # -*- coding: utf-8 -*-
    
    import xlrd
    file_path = "D:/MyData/ex_lizq5/PycharmProjects/read_excel/ratedate.xlsx"
    
    #打开文件,获得excel文件的工作簿对象
    excel = xlrd.open_workbook(file_path,encoding_override='utf-8')
    
    # 返回所有的sheet对象的list
    all_sheet = excel.sheets() # 获得工作簿sheet对象的方法,得到一个sheet列表
    print(all_sheet)
    
    # 通过索引得到sheet对象
    print excel.sheet_by_index(0)
    # 通过索引得到sheet对象的名称
    print excel.sheet_by_index(0).name
    # 通过sheet表的表名获得对象
    print excel.sheet_by_name("Sheet0").name
    
    # 遍历sheet列表,对每一个sheet进行操作
    for each_sheet in all_sheet:
        # 从对象列表中获得sheet对象
        print each_sheet
        # 获得sheet表的名字
        print "sheet的名字是:%s".decode('utf-8') % each_sheet.name# 格式化打印
        print("表名称为:{0},类型为:{1}".format(excel.sheet_by_index(0), type(excel.sheet_by_index(0))))
    
    # 获取工作表的基本信息,表名、行数,列数等
    sheet_name = []
    row_num = []
    col_num = []
    for each_sheet in all_sheet:
        sheet_name.append(each_sheet.name)
        print "该excel文件共有%d个sheet,当前sheet的名称是%s,该sheet有%d行,%d列".decode('utf-8') % (len(all_sheet),each_sheet.name,each_sheet.nrows,each_sheet.ncols)
        row_num.append(each_sheet.nrows)
        col_num.append(each_sheet.ncols)
    
    print sheet_name
    print row_num
    print col_num
    
    # 遍历sheet1的所有行和列
    print "--------------读取每行----------------------".decode('utf-8')
    
    # 得到某个sheet的总行数
    print excel.sheet_by_name('Sheet0').nrows
    # 通过sheet的报名获得sheet对象
    mysheet = excel.sheet_by_name('Sheet0')
    # 每行形成一个列表
    print "-----打印序号为1的行,结果是一个列表------"
    print mysheet.row_values(1)
    # 打印序号为1的行的第0列
    print mysheet.row_values(1)[0]
    
    # 遍历每行的值
    for value in mysheet.row_values(1):
         print value,
    
    
    print ""
    print "-----用row(index)方法打印,结果是一个字典列表-----"
    # Sheet.row(r)或Sheet.col(c)可以获得指定行或列,返回Cell对象的list,得到的是一个字典列表
    print mysheet.row(1)
    # 获取单元格(1,1)的值
    print mysheet.cell_value(1,1)

    3、尽量不用xlwt包写入Excel文件

    在xlwt中生成的xls文件最多能支持65536行数据,如果数据太多,会报这个错误:

    ValueError: row index (65536)not an intin range(65536)错误

    写入示例:

      # 1. 导入模块
      import xlwt
    def write_excel():
      # 2. 创建Excel工作薄
      myWorkbook = xlwt.Workbook()
      # 3. 添加Excel工作表
      mySheet = myWorkbook.add_sheet('A Test Sheet')
      # 4. 写入数据
      myStyle = xlwt.easyxf('font: name Times New Roman, color-index red, bold on', num_format_str='#,##0.00')   #数据格式
      mySheet.write(i, j, 1234.56, myStyle)
      mySheet.write(2, 0, 1)                          #写入A3,数值等于1
      mySheet.write(2, 1, 1)                          #写入B3,数值等于1
      mySheet.write(2, 2, xlwt.Formula("A3+B3"))      #写入C3,数值等于2(A3+B3)
      #5. 保存
      myWorkbook.save('excelFile.xls')
    if __name__ == '__main__':
        # 写入Excel
        write_excel();
        print ('写入成功') 
        

    4、用openpyxl包写入Excel文件

    # 导包
    import openpyxl
    
    #写excel
    def write_excel():
        f = openpyxl.Workbook() #创建工作簿
    
        sheet1 = f.create_sheet()
        #sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet
        row0 = [u'L1',u'L2',u'L3',u'L4',u'问题',u'答案']
    
        #生成第一行
        #for i in range(len(row0)):
        #    sheet1.cell(column=i,row=0).value='L1')
    
        #生成后续
    
        for jkey in range(len(newTables)): 
           jk = 1
           for cT in range(arrayNum):
             jk = jkey + 1
             if cT == 0:
               sheet1.cell(row=jk,column=cT+1).value='1'
             else:
               sheet1.cell(row=jk,column=cT+1).value='2'
               
        f.save("chatPy.xlsx") #保存文件
    
    if __name__ == '__main__':
        # 写入Excel
        write_excel();
        print ('写入成功')
       

    5 用pandas读写excel

    用pandas处理excel和csv文件方法相同

    https://blog.csdn.net/liufang0001/article/details/77856255

  • 相关阅读:
    VC多文档编程技巧(取消一开始时打开的空白文档)
    GetActiveView 返回 NULL 为 MDI 框架窗口
    UC何小鹏:移动互联网创业需警惕五大“不靠谱
    vc:如何从Internet上有效而稳定地下载文件
    python操作文件
    python if条件判断
    python使用退格键时出现^H解决方法
    Python中列表,元组,字典,集合的区别
    python调用shell脚本
    python调用shell命令
  • 原文地址:https://www.cnblogs.com/yoyowin/p/12050299.html
Copyright © 2020-2023  润新知