pytthon3--excel的处理(xlrdopenpyxl)

Posted guoyucong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytthon3--excel的处理(xlrdopenpyxl)相关的知识,希望对你有一定的参考价值。

1、安装模块;

     pip install xlrd                # xlrd模块既可以处理2003版本之前的excel表格 xls,也可以处理新版本表格 xlsx; 但是 只能读取数

     pip install openpyxl       # openpyxl可以读,可以写,但是不支持老版本的excel文档;

2、表单处理  ---  读数据 (xlrd模块);

前置条件:

                         import xlrd

                         book = xlrd.open_workbook("income.xlsx")

                         sheet = book.sheet_by_index(0)   

操作文件截图:

技术图片

文档操作:

获取所有sheet名称:                              book.sheet_names()

获取所有sheet数量:                              book.nsheets ,如: print(book.nsheets)
通过sheet索引获取表单 :                     sheet = book.sheet_by_index(0)               # 获取到需要的 表单对象;
通过sheet名称获取表单 :                     sheet = book.sheet_by_name("2018")     # 获取到需要的 表单对象;

表格操作:

3.1、获取表单名称:print(sheet.name)

3.2、获取表单索引:print(sheet.number)

3.3、获取表单行数:print(sheet.nrows)

3.4、获取表单列数:print(sheet.ncols)

3.5、获取A1表格数据:print(sheet.cell_value(rowx=0,colx=0))    # 默认是浮点数;  可以加 "int" 得到整数:int(sheet.cell_value(rowx=0,colx=0))

3.6、获取一整行数据: print(sheet.row_values(rowx=0))

3.7、获取第一行的第二列及以后的数据:print(sheet.row_values(rowx=0,start_colx=1,end_colx=None))  ;  # None参数可以省略,变成:sheet.row_values(rowx=0,start_colx=1)

3.8、获取一张列数据: print(sheet.col_values(colx=1))

3.9、获取第2列的第2行到第11行数据:print(sheet.col_values(colx=1,start_rowx=1,end_rowx=10))

3.10、计算表格“2017”中数字的和:

                     sheet = book.sheet_by_name("2017")
incomes = sheet.col_values(colx=1,start_rowx=1)
print("2017年收入为:{}".format(int(sum(incomes))))

3、表单处理  ---  写数据(openpyxl);

前置条件:

                         import openpyxl

 

# 创建一个 excelworkbook对象;

                         book = book = openpyxl.Workbook()    

# 创建时,会自动产生一个sheet,通过actcive获取到这个 表单(sheet);

                         sheet = book.active

# 修改当前 sheet 标题为  省份;

      sheet.title = "省份"

# 保存文档;--每次操作完成后一定要保存

      book.save("中国.xlsx")

# 增加一个名为 “四川省” 的sheet,放在最后;

      sheet1 = book.create_sheet("四川省--最后")

# 增加一个名为 “北京市” 的sheet,放在最前面;

      sheet2 = book.create_sheet("北京市--最前",0)

# 增加一个名为 “广东省” 的sheet,放在第二个位置;

      sheet3 = book.create_sheet("广东省",1)

根据以上操作得到结果如下:

  技术图片

 

# 根据 表单名称 获取某个 sheet 对象;

      sheet = book["省份"]

# 给第一个单元格写入数据;

      sheet["A1"] = "黑龙江省"

 # 获取第一个单元格的内容;

      print(sheet["A1"].value)

# 给任意一个单元格赋值;

      sheet.cell(2,2,value = "山东省")    ,  等价后面这个写法:sheet.cell(3,3).value = "山东省2"

命令中表示单元格的数字参数是从 1 开始计数(xlrd是从 0 开始计数)

技术图片

4、表单处理  ---  数据修改(openpyxl);

import openpyxl
4.1、修改目标单元格数据;

# 加载 excel文件;
      book = openpyxl.load_workbook("中国.xlsx")
# 获取 表对象;
      sheet = book["省份"]
# 修改目标单元格的数据;
      sheet["A1"] = "修改省份"
# 保存修改后的数据;
      book.save("中国-1.xlsx") ,可以和原来名称相同,覆盖原文件,也可以另存为一个新文件;
得到结果如下:

技术图片

4.2、插入、删除行列;
# 在第2行的位置插入、删除1行;
      sheet.insert_rows(2) ; 等价于(插入一行时第二个参数可以省略) :
sheet.insert_rows(2,1)
      sheet.delete_rows(2) ; 等价于(删除一行时第二个参数可以省略) : sheet.delete_rows(2,1)
# 在第3行的位置插入、删除5行;
      
sheet.insert_rows(3,5);
      sheet.delete_rows(3,5);
# 在第2列的位置插入、删除1列;
      sheet.insert_cols(2) ; 等价于(插入一列是第二个参数可以省略) : sheet.insert_cols(2,1)
      sheet.delete_cols(2) ; 等价于(插入一列是第二个参数可以省略) : sheet.delete_cols(2,1)
# 在第2列的位置插入、删除5列;
      sheet.insert_cols(3,5);
      sheet.delete_cols(3,5)
4.3、文字颜色、字体、大小;
import openpyxl
# 导入 Font对象 和 colors 颜色常量;
from openpyxl.styles import Font,colors
# 加载 excel文件;
      book = openpyxl.load_workbook("中国.xlsx")
      sheet = book["省份"]
# 设置单元格字体;
      sheet["A1"].font = Font(color = colors.RED, # 设置字体为红色;
                    size = 15, # 设置字体大小;
                    bold = True,      # 设置字体为粗体;
                    italic = True,     # 设置字体为斜体;
                    )
# 也可以使用RGB数字表示字体颜色;
      sheet["A1"].font = Font(color = "981818")

# 设置整行 字体风格, 指定第5行;
      font == Font(color = "981818")
      for x in range(1,10): # 设置第 1 到 10 列;
        sheet.cell(row=5,column=x).font = font
# 设置整列 字体风格, 指定第5列;
      font = Font(bold = True)
      for x in range(1,10): # 设置第 1 到 10 行;
        sheet.cell(row=x, column = 5).font = font
# 保存设置;
      book.save("中国-1.xlsx") ,可以和原来名称相同,覆盖原文件,也可以另存为一个新文件;
4.4、单元格背景色;
import openpyxl
# 导入 Font对象 和 colors 颜色常量;
from openpyxl.styles import patternfill
# 加载 excel文件;
      book = openpyxl.load_workbook("中国.xlsx")
      sheet = book["省份"]
# 设置某个单元格背景色;
      sheet["A1"].fill = Patternfill("solid","E39191")

# 设置整行背景色, 指定第6行;
      fill = PatternFill("solid","E39191")
      for x in range(1,10): #设置第 1 到 10列;
        sheet.cell(row=6,column=x).fill = fill
# 保存设置;
      book.save("中国-1.xlsx") ,可以和原来名称相同,覆盖原文件,也可以另存为一个新文件;
4.5、插入图片;
import openpyxl
# 导入 Font对象 和 colors 颜色常量;
from openpyxl.drawing import Image
# 加载 excel文件;
      book = openpyxl.load_workbook("中国.xlsx")
      sheet = book["省份"]
# 在第2行,第3列 的位置插入图片;
      sheet.add_image(Image("pic.png"),"C2")
# 保存设置;
      book.save("中国-1.xlsx") ,可以和原来名称相同,覆盖原文件,也可以另存为一个新文件;


以上是关于pytthon3--excel的处理(xlrdopenpyxl)的主要内容,如果未能解决你的问题,请参考以下文章

throws关键字_异常处理的第一种方式(交给别人处理)和try_catch_异常处理的第二种方式(自己处理)

怎么在批处理中加回车命令?

自然语言处理_一般处理流程

ARM协处理器

批处理学习笔记第一课:什么是批处理

实物处理与数据处理