zoukankan      html  css  js  c++  java
  • python操作excel——openpyxl

    一、概述

      python操作excel各个库对比:https://www.cnblogs.com/paul-liang/p/9187503.html

      操作老版本的excel文件使用xlrd:参考:https://segmentfault.com/a/1190000017485618

                     https://www.cnblogs.com/zhang-jun-jie/p/9273721.html   

      官方文档:https://openpyxl.readthedocs.io/en/stable/#usage-examples

    二、入门

      1.安装:

    pip install openpyxl

      conda:

    conda install openpyxl

      2.创建excel文件

    from openpyxl import Workbook
    
    # 实例化一个工作簿
    wb = Workbook()
    # 激活工作簿
    ws = wb.active

      3.打开已有文件

     from openpyxl  import load_workbook
    wb2 = load_workbook('文件名称.xlsx')

     通过value访问单元格内容

    from openpyxl import load_workbook
    
    
    def main():
        file = 'D:1.xlsx'
        wb = load_workbook(file)
        ws = wb.active
        # 通过value访问内容
        A1 = ws['A1'].value
        print(A1)
    
    
    if __name__ == '__main__':
        main()

     4.单元格赋值

    ws['A1'] = 42

      5.单元格访问

    c = ws['A4']
    d = ws.cell(row=4, column=2, value=10)

     一个实际遍历的案例:

        

    from openpyxl import load_workbook
    
    
    def main():
        file = 'D:工作文件浙江省教育厅疫情数据gdsqzmpqk.xlsx'
        wb = load_workbook(file)
        ws = wb.active
        # 可以通过最大行列进行输出遍历
        # 获取最大行
        row_max = ws.max_row
        # 获取最大列
        col_max = ws.max_column
        # for row in ws.rows:
        #     for cell in row:
        #         print(cell.value, '	', end='')
        #     print()
        for i in range(2, row_max + 1):
            for j in range(1, col_max):
                print(ws.cell(row=i, column=j).value, '	', end='')
            print()
    
    
    if __name__ == '__main__':
        main()

     6.保存文件

    wb.save('文件名称.xlsx')

      

      更多参考:https://blog.csdn.net/weixin_43094965/article/details/82226263

       读取excel导入mysql的案例:

    from openpyxl import load_workbook
    import pymysql
    
    
    def write_db(t_sql, t_data):
        # 打开数据库连接
        db = pymysql.connect('127.0.0.1', 'root', 'root', 'test', charset='utf8')
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()
        # 使用 execute()  方法执行 SQL 查询
        cursor.executemany(t_sql, t_data)
        # 提交
        db.commit()
        db.close()
    
    
    def read_excel(filename):
        wb = load_workbook(filename)
        ws = wb.active
        cell_list = []
        row_list = []
        for row in tuple(ws.rows):
            # 清空列表
            cell_list.clear()
            for cell in row:
                cell_list.append(str(cell.value))
            row_list.append(cell_list)
        return row_list
    
    
    if __name__ == '__main__':
        file = 'D:1.xlsx'
        sql = 'INSERT INTO mpqk VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s)'
        data = read_excel(file)
        write_db(sql, data)
        print('SUCCESS!')
  • 相关阅读:
    集合
    16
    最常使用Eclipse快捷键
    Java小菜的进阶之路(异常捕获与处理(一))
    0803作业
    0801作业
    java中this与super的见解
    7.27作业
    7.23作业
    java内部类的浅谈(错误之处还请见谅!)
  • 原文地址:https://www.cnblogs.com/jiangbei/p/11385923.html
Copyright © 2011-2022 走看看