目录

  • xls和xlsx
  • 基本操作
    • 1:用openpyxl模块打开Excel文档,查看所有sheet表
    • 2.1:通过sheet名称获取表格
      • 2.2:获取活动表
    • 3.1:获取表格的尺寸
    • 4.1:获取单元格中的数据
      • 4.2:获取单元格的行、列、坐标
    • 5:获取区间内的数据
      • 获取指定区间的数据
      • 获取指定行列的数据
      • 按行、列获取值
      • 获取活动表的行列数
  • 操作
    • 创建新的excel
    • 修改单元格、excel另存为
    • 添加数据
      • 插入有效数据
      • 插入空行空列
    • 删除行、列
    • 移动指定区间的单元格(move_range)
    • 字母列号与数字列号之间的转换
    • 字体样式
      • 查看字体样式
      • 修改字体样式
      • 设置对齐格式
      • 设置行高列宽
      • 合并、拆分单元格
  • sheet表
    • 创建新的sheet(create_sheet)
    • 修改sheet名字(title)
    • 复制sheet表(copy_worksheet)
    • 删除sheet表(remove)
  • 操作多个Excel表
    • 背景知识
      • numpy与pandas
      • xlsxwriter
  • 一个Excel电子表格文档称为一个工作簿
  • 一个工作簿保存在一个扩展名为.xlsx的文件中
  • 一个工作簿可以包含多个表
  • 用户当前查看的表(或关闭Excel前最后查看的表)称为活动表
  • 在特定行和列的方格称为单元格、格子

处理Excel表格需要用到openpyxl模块,该模块需要手动安装pip install openpyxl

xls和xlsx

简单来说:
xls是excel2003及以前版本所生成的文件格式
xlsx是excel2007及以后版本所生成的文件格式
(excel 2007之后版本可以打开上述两种格式,但是excel2013只能打开xls格式)
进一步的详细解释参见:excel后缀.xls和.xlsx有什么区别

基本操作

用到的test.xlsx表格
在这里插入图片描述

1:用openpyxl模块打开Excel文档,查看所有sheet表

openpyxl.load_workbook()函数接受文件名,返回一个workbook数据类型的值。这个workbook对象代表这个Excel文件,这个有点类似File对象代表一个打开的文本文件。

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')   # 返回一个workbook数据类型的值
print(workbook.sheetnames)  # 打印Excel表中的所有表# 结果:
# ['Sheet1', 'Sheet2']

2.1:通过sheet名称获取表格

在第10行,使用workbook['Sheet1']获取指定sheet表

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
print(workbook.sheetnames)  # 打印Excel表中的所有表sheet = workbook['Sheet1']  # 获取指定sheet表
print(sheet)# 结果:
# ['Sheet1', 'Sheet2']
# <Worksheet "Sheet1">

2.2:获取活动表

使用workbook.active获取活动表

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active     # 获取活动表
print(sheet)# 结果:
# <Worksheet "Sheet1">

3.1:获取表格的尺寸

这里所说的尺寸大小,指的是excel表格中的数据有几行几列,针对的是不同的sheet而言
使用sheet.dimensions获取表格的尺寸
下面打印的A1:B7是什么意思呢?

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook['Sheet1']  # 获取指定sheet表
print(sheet.dimensions)     # 获取表格的尺寸大小# 结果:
# A1:B7

4.1:获取单元格中的数据

方法1:指定坐标的方式
sheet[“A1”]

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active     # 获取活动表
# print(sheet.dimensions)     # 获取表格的尺寸大小cell1 = sheet['A1']         # 获取A1单元格的数据
cell2 = sheet['B7']         # 获取B7单元格的数据
# cell2 = sheet['B7'].value      # 另一种写法# 正确示范
# cell1.value获取单元格A1中的值
# cell2.value获取单元格B7中的值
print(cell1.value,cell2.value)  # 姓名 18# 错误示范
print(cell1,cell2)  # <Cell 'Sheet1'.A1> <Cell 'Sheet1'.B7>

方法2: 指定行列的方式
sheet.cell(row=, column=)方式

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active     # 获取活动表
# print(sheet.dimensions)     # 获取表格的尺寸大小cell1 = sheet.cell(row=1,column=1)         # 获取第1行第1列的数据
cell2 = sheet.cell(row=3,column=2)         # 获取第3行第4的数据# 正确示范
# cell1.value获取单元格A1中的值
# cell2.value获取单元格B7中的值
print(cell1.value,cell2.value)  # 姓名 41

4.2:获取单元格的行、列、坐标

  • .row 获取某个格子的行数;
  • .columns 获取某个格子的列数;
  • .coordinate 获取某个格子的坐标;
import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
# print(sheet.dimensions)     # 获取表格的尺寸大小cell = sheet.cell(row=3, column=2)  # 获取第3行第4的数据print(cell.value, cell.row, cell.column, cell.coordinate)'''
结果:
41 3 2 B3
'''

5:获取区间内的数据

获取单行单列数据的时候,使用一层for循环;获取多行多列、指定区间的数据时,使用两层for循环

获取指定区间的数据

  1. 使用sheet['A1:A5']拿到指定区间
  2. 使用两个for循环拿到数据
import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:')
print(sheet)cell = sheet['A1:A5']  # 获取A1到A5的数据print(cell)# 打印A1到A5的数据
for i in cell:for j in i:print(j.value)# 结果:
# 当前活动表是:
# <Worksheet "Sheet1">
# ((<Cell 'Sheet1'.A1>,), (<Cell 'Sheet1'.A2>,), (<Cell 'Sheet1'.A3>,), (<Cell 'Sheet1'.A4>,), (<Cell 'Sheet1'.A5>,))
# 姓名
# 张三
# 李四
# 王五
# 赵六

获取指定行列的数据

  • sheet[“A”] — 获取A列的数据
  • sheet[“A:C”] — 获取A,B,C三列的数据
  • sheet[5] — 只获取第5行的数据

下面的代码,获取一列数据的时候,使用一层for循环

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))cell = sheet['2']  # 获取第2行的数据# 打印A1到A5的数据
for i in cell:print(i.value)# 结果:
# 当前活动表是:<Worksheet "Sheet1">
# 张三
# 74

下面代码,获取两列数据的时候,使用两层for循环。注意到,两列的结果打印到一起了,可读性较差

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))cell = sheet['A:B']  # 获取AB列的数据# 打印AB列数据
for i in cell:for j in i:print(j.value)# 结果:
# 当前活动表是:<Worksheet "Sheet1">
# 姓名
# 张三
# 李四
# 王五
# 赵六
# alice
# bob
# 年龄
# 74
# 41
# 56
# 12
# 17
# 18

按行、列获取值

iter_rows():按行读取
iter_cols():按列读取

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))# 按行获取值
print('按行获取值')
for i in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=2):for j in i:print(j.value)# 按列获取值
print('按列获取值')
for i in sheet.iter_cols(min_row=2, max_row=5, min_col=1, max_col=2):for j in i:print(j.value)# 结果:
# 当前活动表是:<Worksheet "Sheet1">
# 按行获取值
# 张三
# 74
# 李四
# 41
# 王五
# 56
# 赵六
# 12
# 按列获取值
# 张三
# 李四
# 王五
# 赵六
# 74
# 41
# 56
# 12

获取活动表的行列数

方法1:使用
sheet.max_row 获取行数
sheet.max_column 获取列数

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('2.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))rows = sheet.max_row        # 获取行数
column = sheet.max_column   # 获取列数print(rows)
print(column)'''
结果:
当前活动表是:<Worksheet "Sheet1">
381
6
'''

方法2:自己写一个for循环

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))row = []
column = []
# 获取当前活动表有多少行
for i in sheet.rows:row.append(list(i))         # i是元组类型,转为列表# 获取当前活动表有多少列
for i in sheet.columns:column.append(list(i))    # i是元组类型,转为列表print('行数:'+str(len(row)))
print('列数:'+str(len(column)))'''
结果:
当前活动表是:<Worksheet "1号sheet">
行数:12
列数:3
'''

操作

创建新的excel

第9行代码用来指定创建的excel的活动表的名字:

  • 不写第9行,默认创建sheet
  • 写了第9行,创建指定名字的sheet表
import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.title = '1号sheet'
workbook.save('1.xlsx')

修改单元格、excel另存为

第9行代码,通过给单元格重新赋值,来修改单元格的值
第9行代码的另一种写法sheet['B1'].value = 'age'
第10行代码,保存时如果使用原来的(第7行)名字,就直接保存;如果使用了别的名字,就会另存为一个新文件

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
sheet['A1'] = 'name'
workbook.save('test.xlsx')

添加数据

插入有效数据

使用append()方法,在原来数据的后面,按行插入数据

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))data = [['素子',23],['巴特',24],['塔奇克马',2]
]
for row in data:sheet.append(row)   # 使用append插入数据
workbook.save('test.xlsx')

插入空行空列

  • insert_rows(idx=数字编号, amount=要插入的行数),插入的行数是在idx行数的下方插入
  • insert_cols(idx=数字编号, amount=要插入的列数),插入的位置是在idx列数的左侧插入
import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))sheet.insert_rows(idx=3, amount=2)
sheet.insert_cols(idx=2, amount=1)
workbook.save('test.xlsx')

删除行、列

  • delete_rows(idx=数字编号, amount=要删除的行数)
  • delete_cols(idx=数字编号, amount=要删除的列数)
import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))sheet.delete_rows(idx=10)           # 删除第10行
sheet.delete_cols(idx=1, amount=2)  # 删除第1列,及往右共2列
workbook.save('test.xlsx')

移动指定区间的单元格(move_range)

move_range(“数据区域”,rows=,cols=):正整数为向下或向右、负整数为向左或向上

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))sheet.move_range('D11:F12',rows=0,cols=-3)  # 移动D11到F12构成的矩形格子
workbook.save('test.xlsx')

字母列号与数字列号之间的转换

核心代码

from openpyxl.utils import get_column_letter, column_index_from_string# 根据列的数字返回字母
print(get_column_letter(2))  # B
# 根据字母返回列的数字
print(column_index_from_string('D'))  # 4

举个例子:

import os
import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_stringpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('2.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))# 根据列的数字返回字母
print(get_column_letter(2))  # B
# 根据字母返回列的数字
print(column_index_from_string('D'))  # 4

字体样式

查看字体样式

import os
import openpyxl
import openpyxl.stylespath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:'+str(sheet))cell = sheet['A1']
font = cell.font
print('当前单元格的字体样式是')
print(font.name, font.size, font.bold, font.italic, font.color)'''
当前活动表是:<Worksheet "1号sheet">
当前单元格的字体样式是
等线 11.0 False False <openpyxl.styles.colors.Color object>
Parameters:
rgb=None, indexed=None, auto=None, theme=1, tint=0.0, type='theme'
'''

修改字体样式

openpyxl.styles.Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)
其中,字体颜色中的color是RGB的16进制表示

import os
import openpyxl
import openpyxl.stylespath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print(sheet)cell = sheet['A1']
cell.font = openpyxl.styles.Font(name="微软雅黑", size=20, bold=True, italic=True, color="FF0000")workbook.save('test.xlsx')

再者,可以使用for循环,修改多行多列的数据,在这里介绍了获取的方法

import os
import openpyxl
import openpyxl.stylespath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print(sheet)cell = sheet['A']
for i in cell:i.font = openpyxl.styles.Font(name="微软雅黑", size=20, bold=True, italic=True, color="FF0000")workbook.save('test.xlsx')

设置对齐格式

Alignment(horizontal=水平对齐模式,vertical=垂直对齐模式,text_rotation=旋转角度,wrap_text=是否自动换行)
水平对齐:‘distributed’,‘justify’,‘center’,‘left’, ‘centerContinuous’,'right,‘general’
垂直对齐:‘bottom’,‘distributed’,‘justify’,‘center’,‘top’

import os
import openpyxl.stylespath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))cell = sheet['A1']
alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center", text_rotation=0, wrap_text=True)
cell.alignment = alignmentworkbook.save('test.xlsx')

当然,你仍旧可以调用for循环来实现对多行多列的操作

import os
import openpyxl.stylespath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))cell = sheet['A']
alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center", text_rotation=0, wrap_text=True)
for i in cell:i.alignment = alignmentworkbook.save('test.xlsx')

设置行高列宽

设置行列的宽高:

  • row_dimensions[行编号].height = 行高
  • column_dimensions[列编号].width = 列宽
import os
import openpyxl
import openpyxl.stylespath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))# 设置第1行的高度
sheet.row_dimensions[1].height = 50
# 设置B列的卷度
sheet.column_dimensions['B'].width = 20workbook.save('test.xlsx')

设置所有单元格
(显示的结果是设置所有,有数据的单元格的)

from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
import osos.chdir(r'C:\Users\asuka\Desktop')workbook = load_workbook('1.xlsx')
print(workbook.sheetnames)  # 打印所有的sheet表
ws = workbook[workbook.sheetnames[0]]  # 选中最左侧的sheet表width = 2.0  # 设置宽度
height = width * (2.2862 / 0.3612)  # 设置高度print("row:", ws.max_row, "column:", ws.max_column)  # 打印行数,列数
for i in range(1, ws.max_row + 1):ws.row_dimensions[i].height = height
for i in range(1, ws.max_column + 1):ws.column_dimensions[get_column_letter(i)].width = widthworkbook.save('test.xlsx')

合并、拆分单元格

合并单元格有下面两种方法,需要注意的是,如果要合并的格子中有数据,即便python没有报错,Excel打开的时候也会报错。

  • merge_cells(待合并的格子编号)
  • merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)
import os
import openpyxl
import openpyxl.stylespath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))# 方法1:
sheet.merge_cells('A12:B13')
# 方法2:
sheet.merge_cells(start_row=12, start_column=3, end_row=13, end_column=4)# 加一个居中对齐
cell = sheet['A12']
alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center", text_rotation=0, wrap_text=True)
cell.alignment = alignmentcell = sheet['C12']
alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center", text_rotation=0, wrap_text=True)
cell.alignment = alignmentworkbook.save('test.xlsx')

拆分单元格的方法同上

  • unmerge_cells(待合并的格子编号)
  • unmerge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)

sheet表

创建新的sheet(create_sheet)

create_sheet(“新的sheet名”):创建一个新的sheet表

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))workbook.create_sheet('3号sheet')    # 创建新的sheet表
print(workbook.sheetnames)           # 查看所有的sheet表
workbook.save('test.xlsx')'''
当前活动表是:<Worksheet "Sheet1">
['Sheet1', 'Sheet2', '3号sheet']
'''

修改sheet名字(title)

第11行,使用title修改sheet表的名字

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))sheet.title = '1号sheet'  # 修改sheet表
workbook.save('test.xlsx')

复制sheet表(copy_worksheet)

在“操作”>“修改单元格、excel另存为”中提到了另存为,其实复制sheet表就是一个另存为的过程,你要是在12行代码保存的时候使用第7行的文件名,那么复制的sheet表就保存到自己身上,内容跟copy.xlsx一样。

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))workbook.copy_worksheet(sheet)   # 复制sheet表
workbook.save('copy.xlsx')

删除sheet表(remove)

remove(“sheet名”):删除某个sheet表
要删除某sheet表,需要激活这个sheet表,即:将其作为活动表(关于活动表的定义请看前面文章开头写的有)下面8~11行代码展示了原始活动表与手动更换活动表,第13行代码删掉活动表

import os
import openpyxlpath = r"C:\Users\asuka\Desktop"
os.chdir(path)  # 修改工作路径workbook = openpyxl.load_workbook('test.xlsx')  # 返回一个workbook数据类型的值
sheet = workbook.active  # 获取活动表
print('当前活动表是:' + str(sheet))
sheet = workbook['3号sheet']     # 手动切换到要删除的sheet表,一旦切换,这张表就是活动表
print('当前活动表是:' + str(sheet))workbook.remove(sheet)  # 删除当前活动表
print(workbook.sheetnames)
workbook.save('test.xlsx')'''
当前活动表是:<Worksheet "Sheet1">
当前活动表是:<Worksheet "3号sheet">
['Sheet1', 'Sheet2']
'''

操作多个Excel表

其实想用openpyxl玩这个,但是网上用的是别的库,就有点无语,以后熟练的话在自己写一个函数实现吧

背景知识

numpy与pandas

NumPy是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库;pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的,我们需要利用Pandas进行Excel的合并

  1. 下面的代码生成了一个5行3列的包含15个字符的嵌套列表

(注意,第4行代码:15是等于35的,如果是15对应43,或者16对应5*3都会报错)
(注意,第5行代码,虽然5行3列是15个数据,但是可以指定数据从1开头,到16结束)

import numpy as np
import pandas as pdxx = np.arange(15).reshape(5, 3)
yy = np.arange(1, 16).reshape(5, 3)print(xx)
print(yy)'''
[[ 0  1  2][ 3  4  5][ 6  7  8][ 9 10 11][12 13 14]]
[[ 1  2  3][ 4  5  6][ 7  8  9][10 11 12][13 14 15]]
'''
  1. 添加表头

使用pandas库的DataFrame来添加表头。关于打印的结果,把最左侧的一列去掉之后会发现结果很和谐,这是因为最左侧的一列代表行号。此时xx变量的类型是<class ‘pandas.core.frame.DataFrame’>

import numpy as np
import pandas as pdxx = np.arange(15).reshape(5, 3)
yy = np.arange(1, 16).reshape(5, 3)
xx = pd.DataFrame(xx, columns=["语文", "数学", "外语"])
yy = pd.DataFrame(yy, columns=["语文", "数学", "外语"])
print(xx)
print(yy)'''
结果:语文  数学  外语
0   0   1   2
1   3   4   5
2   6   7   8
3   9  10  11
4  12  13  14语文  数学  外语
0   1   2   3
1   4   5   6
2   7   8   9
3  10  11  12
4  13  14  15
'''
  1. 合并两个矩阵

pd.concat(list)括号中传入的是一个列表;
ignore_list=True表示忽略原有索引,重新生成一组新的索引;
或者直接可以写成z = pd.concat([xx,yy],ignore_list=True);
不知道为什么失败,暂时搁浅

xlsxwriter

xlsxwriter模块一般是和xlrd模块搭配使用的,
xlsxwriter:负责写入数据,
xlrd:负责读取数据。

  1. 创建一个工作簿
import xlsxwriter
import ospath = r"C:\Users\asuka\Desktop"
os.chdir(path)# 这一步相当于创建了一个新的"工作簿";
# "demo.xlsx"文件不存在,表示新建"工作簿";
# "demo.xlsx"文件存在,表示新建"工作簿"覆盖原有的"工作簿";
workbook = xlsxwriter.Workbook("demo.xlsx")# close是将"工作簿"保存关闭,这一步必须有,否则创建的文件无法显示出来。
workbook.close()
  1. 创建sheet表
import xlsxwriter
import ospath = r"C:\Users\asuka\Desktop"
os.chdir(path)workbook = xlsxwriter.Workbook("cc.xlsx")   # 创建一个名为cc.xlsx的文件
worksheet = workbook.add_worksheet("2018年销售量")  # 创建一个名为“2018年销售量”的sheet表workbook.close()
  1. 写入数据
import xlsxwriter
import ospath = r"C:\Users\asuka\Desktop"
os.chdir(path)# 创建一个名为【demo.xlsx】工作簿;
workbook = xlsxwriter.Workbook("demo.xlsx")# 创建一个名为【2018年销售量】工作表;
worksheet = workbook.add_worksheet("2018年销售量")# 使用write_row方法,为【2018年销售量】工作表,添加一个表头;
headings = ['产品', '销量', "单价"]
worksheet.write_row('A1', headings)
# 使用write方法,在【2018年销售量】工作表中插入一条数据;
# write语法格式:worksheet.write(行,列,数据)data = ["苹果", 500, 8.9]
for i in range(len(headings)):worksheet.write(1, i, data[i])workbook.close()

python实现——处理Excel表格(超详细)相关推荐

  1. Python xlrd 读取 Excel 表格基础(一):获取sheet、行、列对象,读取数据类型等

    Python xlrd 读取 Excel 表格基础 一:按行.按列读取Excel数据内容 前言: 1.获取工作簿.sheet对象 2.获取sheet表中行.列对象 3.读取sheet对象中所有数据 4 ...

  2. python处理excel表格数据-零基础使用Python读写处理Excel表格的方法

    引 由于需要解决大批量Excel处理的事情,与其手工操作还不如写个简单的代码来处理,大致选了一下感觉还是Python最容易操作. 安装库Python环境 首先当然是配环境,不过选Python的一个重要 ...

  3. com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格

    这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...

  4. [转载] Python中对 Excel 的相关详细操作(读取、写入、指定行、指定列、新增sheet工作表)

    参考链接: 使用Python写入Excel工作表 工作中用到这点,就简单的整理了一下 目录 一.准备cateContent.xlsx工作簿 二.Python中关于Excel表格常用操作总结: 2.1  ...

  5. python批量翻译excel表格中的英文

    python批量翻译excel表格中的英文 需求背景 主要设计 分析 具体实现 表格操作 请求百度翻译api 多线程 控制台显示进度 完整源码 需求背景 女朋友的论文需要爬取YouTube视频热评,但 ...

  6. 如何使用python批量合并excel表格

    使用Python批量合并Excel表格的方法主要可以通过Pandas库来实现,具体步骤如下: 首先需要导入Pandas库和os库: import pandas as pd import os

  7. python操作统计excel表格,生成新excel表格

    0.前言 因产品的同学试着用python统计Excel表格,但百度的程序又一直有各种问题, 所以叫我帮用python实现一个统计Excel表格程序:我之前也没有写过python操作Excel表格的程序 ...

  8. python快速将excel表格规范导入word

    提示:快速将excel表格规范导入word python快速将excel表格规范导入word 前言 二.开发环境 三.实现步骤 1.引入库 2.代码片段 前言 最近接到一个需求,公司的统计需要一个ex ...

  9. python与excel表格-超简单:用Python让Excel飞起来

    超简单:用Python让Excel飞起来 作者:王秀文;郭明鑫;王宇韬 编著 出版日期:2020年07月 文件大小:20.30M 支持设备: ¥45.00在线试读 适用客户端: 言商书局 iPad/i ...

  10. python openpyxl 读取Excel,超简单案例python openpyxl 获取表格数据

    1. import openpyxl 导入openpyxl模块 import openpyxl #导入模块openpyxl 2. 获取的文件(×××.xlsx) 使用openpyxl下的方法获取Exc ...

最新文章

  1. AlexeyAB DarkNet YOLOv3框架解析与应用实践(六)
  2. 人工智能在网络贷款中鲜为人知的事
  3. 【独家】孙茂松:从机器翻译到古诗生成
  4. 查找:对于长度为n的线性表最坏查找次数
  5. 我的第一个python web开发框架(6)——第一个Hello World
  6. 网站模型|可以帮助你以一种美丽、独特的方式展示你的网站设计。
  7. 许多新兴的互联网O2O企业,做的都是一些“无中生有”的事情
  8. C语言中extern 全局变量,二进制文件与内存,static,const对栈,内存的使用情况
  9. python二次开发ug_CAD二次开发(UG/Proe/其他) - 随笔分类 - 白途思 - 博客园
  10. 规划风险应对-规划过程组
  11. Android Studio第九课(学习打卡Day11)
  12. PYTHON——自然间断点分级法
  13. 如何欺骗神经网络,让它把熊猫识别为秃鹫
  14. 全双工与半双工带宽区别
  15. Android Vendor Test Suite (VTS) 的概念、作用及测试方法
  16. 程序员如何边工作边创业?
  17. 【推荐系统】HIN异构信息网络(Hetegeneous Information Network)
  18. C语言 结构体 来淄博旅游
  19. sync.Map详解
  20. python伪装浏览器什么意思_python浏览器伪装

热门文章

  1. html网页设计导航栏制作教程,使用CSS制作立体导航栏
  2. HbuilderX开发App调用手机支付宝支付
  3. 人类的历史就是一部创业史
  4. 基于python3的百度街景地图爬虫
  5. 人工智能之父图灵头像将登上新版50英镑钞票
  6. 荣耀A55高调上市只为孤独求败?
  7. 手游实时阴影方案之Projector Shadow
  8. Linux内存:内存管理的实质 (转CU上frank_seng 的总结,感谢frank_seng )
  9. 前端项目如何添加配置文件
  10. 随机搜索 /爬山法/模拟退火/遗传算法