python修改excel(不修改原格式)

python修改excel(不修改原格式)

使用xlwt虽然可以编辑excel中的数据,但假如原本的表格中一些单元格是带格式的,例如加粗,颜色不一样等,编辑后这些格式都会丢失。

因为编辑过程是先把整个表格先复制一遍,然后在复制的数据上进行修改,最终再把编辑好的数据保存到原本的表格中进行覆盖,xlwt复制是不会复制表格文本的格式的,所以修改后的数据覆盖原本的数据就把格式给弄丢了。

使用openpyxl模块来编辑表格就没这样的问题,用它来修改表格,原来的格式依旧存在,使用方法如下:

  1. 下载openpyxl

    1
    pip install openpyxl
  2. 打开已存在表格

    1
    2
    from openpyxl import load_workbook
    wb = load_workbook('表格.xlsx')
  3. 获取工作表

    1
    sheet = wb.get_sheet_by_name('Sheet1')
  4. 获取单元格

    1
    2
    3
    4
    #方式一
    cell = sheet['A1']
    #方式二
    cell = sheet.cell(row=1, column=1)
  5. 设置单元格数据

    1
    cell.value = 'hello'
  6. 保存到表格内

    1
    wb.save('表格.xlsx')

使用汇总

  1. 安装

    1
    pip install openpyxl
  2. 打开文件

    2.1 创建、保存

    1
    2
    3
    4
    python
    from openpyxl import Workbook
    wb = Workbook()
    wb.save('hehe.xlsx')

    2.2 打开已存在文件

    1
    2
    form openpyxl import load_workbook
    wb = load_workbook('hehe.xlsx')
  3. 工作簿操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    wb = load_workbook('hehe.xlsx')
    #获取工作簿中的列表
    print(wb.sheetnames)

    #查看是否只读
    print(wb.read_only)

    #文档编码
    print(wb.encoding)

    #创建表
    sheet1 = wb.create_sheet('sheet1')
    sheet2 = wb.create_sheet('sheet2', 0) #插到开始位置

    #选择表格
    sheet = wb.get_sheet_by_name('sheetname'))
    sheet = wb['sheetname']
    sheet = wb.active #获取当前活跃的woksheet
  4. 工作表(sheet)操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    sheet = wb['sheetname']

    #获取最大行数/列数
    rows_num = sheet.max_row
    col_num = sheet.column

    #获取所有的行/列
    rows = sheet.rows
    columns = sheet.columns
  5. 单元格(cell)操作(单个单元格)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #访问单元格
    cell = sheet['A1']
    cell = sheet.cell(row=4, column=1)

    #获取单元格数据
    value = cell.value

    #修改单元格内容
    cell.value = 'hehe' #方式一
    sheet.cell(1, 2, 10) #方式二
  6. 多单元格操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #选择整行
    row = sheet[10]
    #选择多行
    rows = sheet[1:10]

    #选择整列
    col = sheet['C']
    #选择多列
    cols = sheet['C:D']

    #获取多个单元格
    cell_range = sheet['A1':'C2']

7.