python与excel

  • 一、XLWings
    • 1、官方文档
    • 2、常用操作
      • 2.1、操作工作簿
      • 2.2、操作工作表
      • 2.3、操作单元格
        • 2.3.1、写入
        • 2.3.2、读取
        • 2.3.3、删除
        • 2.3.4、单元格样式设置
      • 2.4、插入图表
      • 2.5、综合练习
        • 2.5.1、综合练习1
        • 2.5.2、综合练习2
  • 二、OpenPyXL
    • 1、官方文档
    • 2、常用操作
      • 2.1、excel读取
      • 2.2、excel写入/删除/移动
      • 2.3、excel单元格样式设置
      • 2.5、综合练习
        • 2.5.1、综合练习1
  • 三、pandas
    • 1、官方文档

Excel是在日常工作中使用率非常高的办公工具之一,在Python中处理Excel的模块主要有如下几个:
Xlrd: xlrd仅支持.xls、.xlsx Excel文件的读,并不支持.xls、.xlsx 文件的写。
Xlwt: xlwt仅支持.xls文件的写。
Xlsxwriter: xlswriter支持.xlsx文件的写,另外此模块还支持VBA操作。
Win32com: win32com支持Excel的.xlsx和.xls,安装pypiwin32即可使用该库,该模块现在只支持Windows系统。
Openpyxl: openpyxl支持Excel2010多种文件的操作,read_only和write_only两个参数值得注意,该模块对VBA的支持不好,不支持 .xls文件的操作。
Xlwings: xlwings实现了Excel中调用Python,python中调用Excel,支持.xls文件的读,支持.xlsx文件的读写,支持VBA操作,另外还支持和Numpy、Pandas结合进行操作,在很大程度上扩展了应用。
Pandas : pandas是数据分析领域最为重要的库,支持.xls和.xlsx读写。
本文主要介绍Xlwings、Openpyxl、Pandas等三个模块操作excel的一些常用操作:

一、XLWings

1、官方文档

详细API参考官方文档:https://docs.xlwings.org/en/stable/api.html

2、常用操作

2.1、操作工作簿

新建工作簿——新建sheet——在指定位置插入值——保存工作簿

# 导入xlwings包
import os
import xlwings as xw# 1、创建app应用
app = xw.App(visible=True, add_book=False)
# 新建一个工作簿
wb = app.books.add()
# 新建一个sheet,并操作
# 新建sheet,并起名为first_sht
sht = wb.sheets.add("first_sht")
# 3.2 新建的sheet表中A1位置插入一个值,Datawhale
sht.range('A1').value='Datawhale'
# 保存新建的工作簿,并起以名字
xw_path = './xlwings_lq/'
os.mkdir(xw_path)
os.getcwd()
os.chdir(r'D:\jupyternotebook\office-automation-main\Task02-Python与Excel')
os.getcwd()
os.listdir()
wb.save(xw_path + 'xlwings_lq.xlsx')
os.listdir(xw_path)
# 4、关闭工作簿
wb.close()
# 5、程序运行结束,退出Excel程序
app.quit()



# 1、新建一个工作簿
# wb = app.books.add()  # 程序第三步
# 2、保存新建的工作簿,并起一个名字
# 程序倒数第三步,非常关键,保存操作数据结果
# wb.save(root_path+'xlwings_wb.xlsx')
# 3、打开一个已经存在的工作簿
wb = app.books.open(xw_path+'xlwings_lq.xlsx')  # 程序第三步
# 4、关闭工作簿
# wb.close()  # 程序倒数第二步

2.2、操作工作表

# 在工作簿中新建一个sheet,起名为 second_sht
sht1 = wb.sheets.add('second_sht')
print('sht1:', sht1)
# 选中已经存在的sheet
sht2 = wb.sheets('first_sht')
print('sht2:', sht2)
# 也可以通过索引选择已存在的sheet
sht3 = wb.sheets[0]  # 选中工作簿中的第一个sheet
print('sht3:', sht3)
# 获取工作簿中工作表的个数
sht_nums = wb.sheets.count
print('工作簿中的sheet个数为:%d'% sht_nums)
# 当前工作表名字
print('sht1.name:', sht1.name)
# 获取指定sheet中数据的行数
print('sht1.used_range.last_cell.row:', sht1.used_range.last_cell.row)
# 获取指定sheet中数据的列数
print('sht1.used_range.last_cell.column:', sht1.used_range.last_cell.column)
# 删除指定的sheet 比如删除:first_sht
wb.sheets('first_sht').delete()

2.3、操作单元格

2.3.1、写入

# 在工作表中指定位置插入数据
sht1.range('B1').value = 'Datawhale'
# 在工作表指定位置插入多个数据 默认是横向插入
sht1.range('B2').value = ['DATAWHALE', 'FOR', 'THE', 'LEARNER']
# 在工作表指定位置竖向插入多个数据
# 设置 options(transpose=True),transpose=True 表示转置的意思
sht1.range('B3').options(transpose=True).value = [1, 2, 3, 4]
# 在工作表指定位置开始插入多行数据
sht1.range('B7').value = [['a', 'b'], ['c', 'd']]
# 在工作表指定位置开始插入多列数据
sht1.range('B9').options(transpose=True).value = [['a', 'b'], ['c', 'd']]
# 向单元格写入公式
sht1.range('F2').formula = '=sum(B2:E2)'

2.3.2、读取

# 在工作表中读取指定位置数据
print('单元格B1=', sht1.range('B1').value)
# 在工作表中读取指定区域数据 一行
print('单元格B2:F2=', sht1.range('B2:F2').value)
# 在工作表中读取指定区域数据 一列
print('单元格B3:B6=', sht1.range('B3:B6').value)
# 在工作表中读取指定区域数据 一个区域
# 设置options(transpose=True)就可以按列读 不设置就是按行读
print('单元格B7:C10=', sht1.range('B7:C10').options(transpose=True).value)

2.3.3、删除

# 删除指定单元格中的数据
sht1.range('B10').clear()
# 删除指定范围内单元格数据
sht1.range('B7:B9').clear()

2.3.4、单元格样式设置

# 选中已经存在的sheet
sht1 = wb.sheets('second_sht')
# 返回单元格绝对路径
sht1.range('B3').get_address()
# sht1.range('B3').address
# 合并单元格B3 C3
sht1.range('B3:C3').api.merge()
# 解除合并单元格B3 C3
# sht1.range('B3:C3').api.unmerge()
# 向指定单元格添加带超链接文本
# address- 超连接地址
# text_to_display- 超链接文本内容
# screen_tip- 鼠标放到超链接上后显示提示内容
sht1.range('C2').add_hyperlink(address='https://datawhale.club',text_to_display='DATAWHALE 官网',screen_tip='点击查看 DATAWHALE 官网 ')
# 获取指定单元格的超链接地址
sht1.range('C2').hyperlink
# 自动调试指定单元格高度和宽度
sht1.range('B1').autofit()
# 设置指定单元格背景颜色
sht1.range('B1').color = (93,199,221)
# 返回指定范围内的中第一列的编号 数字,如:A-1 B-2
sht1.range('A2:B2').column
# 获取或者设置行高/列宽
# row_height/column_width会返回行高/列宽 ,范围内行高/列宽不一致会返回None
# 也可以设置一个新的行高/列宽
sht1.range('A2').row_height = 25
sht1.range('B2').column_width = 20
wb.save()

2.4、插入图表

import pandas as pd
import numpy as np# 新建一个sheet
sht3 = wb.sheets.add('third_sht')
# 生成模拟数据
df = pd.DataFrame({'money':np.random.randint(45, 50, size = [1, 20])[0],
},index=pd.date_range('2021-02-01', '2021-02-20'),  # 行索引和时间相关
)
df.index.name = '消费日期'  # 设置索引名字
sht3.range('A1').value = df# 生成图表
chart1 = sht3.charts.add()  # 创建一个图表对象
chart1.set_source_data(sht3.range('A1').expand())  # 加载数据
chart1.chart_type = 'line'  # 设置图标类型
chart1.top = sht3.range('D2').top
chart1.left = sht3.range('D2').left  # 设置图标开始位置

import matplotlib.pyplot as plt
# 随便绘制一个饼图
fig1 = plt.figure()  # 先创建一个图像对象
plt.pie([0.5, 0.3, 0.2],  # 值labels=['a', 'b', 'c'],  # 标签explode=(0, 0.2, 0),  # (爆裂)距离autopct='%1.1f%%',   # 显示百分数格式shadow=True)  # 是否显示阴影
plt.show() # 将饼图添加到excel指定位置 J17为图片开始位置
sht3.pictures.add(fig1, name='matplotlib', left=sht3.range('J17').left, top=sht3.range('J17').top, update=True)

spyder中默认不显示图表,提示:Figures now render in the Plots pane by default. To make them also appear inline in the Console, uncheck “Mute Inline Plotting” under the Plots pane options menu.
解决办法:打开tools→preferences→ipython console→graphics backend→选择设置automatic

设置后即可正常显示,如下:

2.5、综合练习

2.5.1、综合练习1

将消费数据可视化生成带平均线的趋势图,存入excel,数据就是之前生成的模拟数据。

fig, ax = plt.subplots()  # 创建一个画板
# 生成一条新线- 平均消费数据
money_m = [df['money'].mean(axis=0) for i in range(len(df['money']))]
# 建一条线:消费趋势折线图
ax.plot(df.index, df['money'], color='#f16a0b', label='每日消费')
# 再建一条线:平均消费直线图
ax.plot(df.index, money_m, linestyle='--', color='#301502', label='平均消费')
# 设置横纵坐标基础说明
ax.set_xlabel(u'日期')
ax.set_ylabel(u'消费金额/元')
ax.set_title(u'消费折线图')
# 设置x轴值显示方向
plt.setp(ax.get_xticklabels(), rotation=70, horizontalalignment='right')
# 添加图例(label说明到图片上) loc设置显示位置
ax.legend(loc=2)
plt.show()
sht3.pictures.add(fig, name='消费情况', left=sht3.range('D17').left, top=sht3.range('D17').top, update=True)
wb.save()

图表中的中文显示异常,如下图:

增加如下设置后,中文显示正常:

# 用来设置字体样式以正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
# 默认是使用Unicode负号,设置正常显示字符,如正常显示负号
plt.rcParams['axes.unicode_minus']=False

2.5.2、综合练习2

将股票数据以指定的格式存储到excel并生成股票走势图,利用akshare爬取上证指数数据 代号:sz000002

import akshare as ak
import xlwings as xw
import datetime # 新建一个sheet
app = xw.App(visible=True, add_book=False)
wb = app.books.open(xw_path+'xlwings_lq.xlsx')
sz_sht = wb.sheets.add('sz_sht2')  # 第一次新建
# sz_sht = wb.sheets['sz_sht']  # 已经存在,直接打开# 获取数据 open high low close volume index-date
# volume 是成交量 多少股
# 0、获取数据
sz_index = ak.stock_zh_index_daily(symbol="sz000002")
sz_index# 1、处理下数据
sz_index.set_index('date', inplace=True)
sz_data = sz_index[datetime.date(2022,1,1):datetime.date(2022,6,14)].iloc[:,0:4]  # 只取今年数据 ohlc
sz_data.index = sz_data.index.to_series().apply(lambda x : x.strftime('%m-%d')) # 将索引日期格式改为 月-日# 2、存储数据
sz_sht.range('A1').value = sz_data# 3、处理数据格式(API接口和教程不一致,可能是版本不同引起的)
# - 表头字体 格式加粗 背景颜色
sz_sht.range('A1:E1').font.name = 'Calibri'
sz_sht.range('A1:E1').font.bold = True
sz_sht.range('A1:E1').font.color=( 255, 255, 255)
# 背景颜色
sz_sht.range('A1:E1').color = (16, 156, 245)
# mac上居中未实现,有了解的小伙伴可以留言指出下,感谢
# sz_sht.range('B1').api.font_object.horizontalalignment = xw.constants.Constants.xlCenter# 4、生成图表
chart_ohlc = sz_sht.charts.add()  # 创建一个图表对象
chart_ohlc.set_source_data(sz_sht.range('A1').expand())  # 加载数据
chart_ohlc.chart_type = 'stock_ohlc'  # 设置图标类型
chart_ohlc.top = sz_sht.range('G2').top
chart_ohlc.left = sz_sht.range('G2').left  # 设置图标开始位置 # 保存新建的工作簿,并起一个名字(如果已存在有名字的excel文件,就直接save即可)
wb.save()
# 关闭工作簿(关闭Excel文件)
wb.close()
# 程序运行结束,退出Excel程序
app.quit()

二、OpenPyXL

1、官方文档

详细API参考官方文档:https://openpyxl.readthedocs.io/en/stable/
中文文档:http://yumos.gitee.io/openpyxl3.0/index.html

2、常用操作

2.1、excel读取

# OpenPyXL
import os
import warnings
import openpyxl# 获取当前工作目录
os.getcwd()
# 屏蔽不必要的警告信息
warnings.filterwarnings('ignore')# 查看属性
op_path = './OpenPyXL_test/'
wb = openpyxl.load_workbook(op_path+'用户行为偏好.xlsx')
type(wb)
# 导入模块中的函数,查询对应表的名称
print(wb.sheetnames)
# 读取工作簿的活动表
# 活动表是工作簿在 Excel 中打开时出现的工作表,在取得 Worksheet 对象后,可通过 title 属性取得它的名称。
active_sheet = wb.active
print(f'active_sheet对象: {active_sheet}')
print(f'active_sheet 名称: {active_sheet.title}')# 通过传递表名字符串读取表、类型和名称、内容占据的大小
sheet = wb.get_sheet_by_name('Sheet3')
print(f'sheet: {sheet}')
print(f'type(sheet): {type(sheet)}')
print(f'sheet.title: {sheet.title}')
print(f'sheet.dimensions: {sheet.dimensions}')# 从表中取得单元格 在 2.1.1 中我们已经读取过工作簿了 返回结果存储变量为 wb
## 获取表格名称
print(f'sheetnames: {wb.sheetnames}')
# 获取指定sheet
sheet = wb.get_sheet_by_name('订单时长分布')
# 通过单元格位置获取单元格对象,如:B1
a = sheet['B1']
print(f"sheet[B1']: {a}")
# 获取并打印 B1 单元格的文本内容
print(f"sheet[B1'].value: {a.value}")
# 获取并打印 B1 单元格所在行、列和数值
print(f'Row: {a.row}, Column: {a.column}')
# 获取并打印 B1 单元格坐标 和 值
print(f'Cell {a.coordinate} is {a.value}')# 获取并打印出 B列 前8行的奇数行单元格的值
for i in range(1,8,2):print(i, sheet.cell(row=i,column=2).value)
# 确定表格的最大行数和最大列数,即表的大小
print(f'sheet.max_row: {sheet.max_row}')
print(f'sheet.max_column: {sheet.max_column}')# 方法一:直接通过sheet索引,A1到C8区域的值
cells = sheet['A1:C8']
print(f'type(cells): {type(cells)} \n')# 遍历元组 print每一个cell值
for rows in cells:for cell in rows:print(cell.value, end=" |")print("\n")# 方法二:sheet.iter_rows函数 按行获取数据
rows = sheet.iter_rows(min_row=1, max_row=8, min_col=1, max_col=3)
# 遍历元组 print每一个cell值
for row in rows:for cell in row:print(cell.value, end=" |")print("\n")# 方法三:sheet.iter_cols函数 按列获取数据
cols = sheet.iter_cols(min_row=1, max_row=4, min_col=1, max_col=3)
# 遍历元组 print每一个cell值
for col in cols:for cell in col:print(cell.value, end=" |")print("\n")    # 找出用户行为偏好.xlsx中 Sheet3 表中空着的格子,并输出这些格子的坐标
from openpyxl import load_workbookexl = load_workbook(op_path+'用户行为偏好.xlsx')
sheet3 = exl.get_sheet_by_name('Sheet3')
sheet3.dimensions
# 直接通过sheet索引,sheet3.dimensions获取sheet数据区域
cells = sheet3[sheet3.dimensions]# 遍历元组 判断每一个cell值是否为空
for rows in cells:for cell in rows:if not cell.value:print(f'{cell.coordinate} is None')




2.2、excel写入/删除/移动




# 获取指定 sheet
sheet = exl_1['Sheet3']# 插入列数据 insert_cols(idx,amount=1)
# idx是插入位置,amount是插入列数,默认是1
# idx=2第2列,第2列前插入一列
sheet.insert_cols(idx=2)
# 第2列前插入5
# sheet.insert_cols(idx=2, amount=5)# 插入行数据 insert_rows(idx,amount=1)
# idx是插入位置,amount是插入行数,默认是1
# 在第二行前插入一行
sheet.insert_rows(idx=2)
# 第2行前插入5行
# sheet.insert_rows(idx=2, amount=5)exl_1.save(filename=op_path+'用户行为偏好_1.xlsx')# 删除多列
sheet.delete_cols(idx=5, amount=2)
# 删除多行
sheet.delete_rows(idx=2, amount=5)exl_1.save(filename=op_path+'用户行为偏好_1.xlsx')# 移动
# 当数字为正即向下或向右,为负即为向上或向左
sheet.move_range('B3:E16',rows=1,cols=-1)
exl_1.save(filename=op_path+'用户行为偏好_1.xlsx')

2.3、excel单元格样式设置

# 5) 实例化一个 Font 对象,设置字体样式
#    字体改为:黑体  大小改为:20  设置为:加粗 斜体 红色
font = Font(name='黑体', size=20, bold=True, italic=True, color='FF0000')
cell.font = font
# 6) 保存修改
exl_1.save(filename=op_path+'用户行为偏好_1.xlsx')
# 1) 获取要处理的单元格
#    通过 sheet 索引获取第二行 cell
#    获取列可以用 字母索引,如 sheet['A'] 获取第一列 cell
cells = sheet[2]
# 2) 实例化一个 Font 对象,设置字体样式
#    字体改为:黑体  大小改为:10  设置为:加粗 斜体 红色
font = Font(name='黑体', size=10, bold=True, italic=True, color='FF0000')
# 3) 遍历给每一个 cell 都设置上对应字体样式
for cell in cells:cell.font = font
# 4) 保存修改
exl_1.save(filename=root_path+'用户行为偏好_1.xlsx')# 1) 导入 openpyxl 中的  styles 模块中的 Side, Border 类
from openpyxl.styles import Side, Border
# 2) 首先初始化一个边线对象(也可以设置多个)
side = Side(border_style='double', color='FF000000')
# 3) 通过 Border 去设置 整个单元格边框样式
border = Border(left=side, right=side, top=side, bottom=side, diagonal=side, diagonalDown=True, diagonalUp=True)

# 5) 修改边框样式,并保存修改
for cell in cells:cell.border = border
exl_1.save(filename=op_path+'用户行为偏好_1.xlsx')

2.5、综合练习

2.5.1、综合练习1

将 业务联系表.xlsx 拆分成以下两个 excel:¶
客户信息表:客户名称 客户地址 客户方负责人 性别 联系电话 对接业务经理编号
业务经理信息表:业务经理编号 所在分区 所在区域 业务经理姓名

# 1) 导入 openpyxl 相关函数和类
from openpyxl import load_workbook, Workbook# 2) 读取原表数据
wb = load_workbook(op_path+'业务联系表.xlsx')
# 3) 获取工作表
sheet = wb.active# 4) 筛选出需要的列
# 4.1) 客户信息表:客户名称 客户地址 客户方负责人 性别 联系电话 备注 对接业务经理编号
cust_info = {'业务经理编号': 'A', '客户名称': 'B', '客户地址': 'C', '客户方负责人': 'D', '性别': 'E', '联系电话': 'F', '备注': 'G'}# 4.2) 新建一个工作簿,并将默认sheet名称改成 客户信息
cust_info_excel = Workbook()
cust_info_sh = cust_info_excel.active
cust_info_sh.title = '客户信息'# 4.3) 遍历筛选,如果是需要的表头,就将该列的值复制到新的工作簿中的 客户信息 工作表中
for i in sheet[2]:if i.value in cust_info:# 遍历将这一列中除了第一个cell外的所有cell值复制到新表for cell in sheet[i.coordinate[0]]:if cell.row == 1:continuecust_info_sh[f'{cust_info[i.value]}{cell.row-1}'].value = cell.value# 5) 筛选出需要的列
# 5.1) 业务经理信息表:业务经理编号 所在分区 所在区域 业务经理姓名
manager_info = {'业务经理编号': 'A', '分区': 'B', '区域': 'C', '业务经理': 'D'}# 5.2) 新建一个工作簿,并将默认sheet名称改成 客户信息
manager_info_excel = Workbook()
manager_info_sh = manager_info_excel.active
manager_info_sh.title = '业务经理信息'# 5.3) 遍历筛选,如果是需要的表头,就将该列的值复制到新的工作簿中的 业务经理信息 工作表中
for i in sheet[2]:if i.value in manager_info:# 遍历将这一列中除了第一个cell外的所有cell值复制到新表for cell in sheet[i.coordinate[0]]:if cell.row == 1:continuemanager_info_sh[f'{manager_info[i.value]}{cell.row-1}'].value = cell.value# 6.1 ) 保存 客户信息表 工作簿内容
cust_info_excel.save(op_path+'客户信息表_xl.xlsx')
# 6.2) 保存 业务经理信息表 工作簿内容
manager_info_excel.save(op_path+'业务经理信息表_xl.xlsx')import pandas as pd# 1) 读取数据
data = pd.read_excel(op_path+'业务联系表.xlsx', header=1)# 2) 数据筛选处理
# 2.1) 客户信息表
# 筛选出 客户信息表 需要的列
cust_info_pd = data[['业务经理编号', '客户名称', '客户地址', '客户方负责人', '性别', '联系电话', '备注']]
# 去除重复行
cust_info_pd.drop_duplicates(inplace=True)
# 打印出前三行
cust_info_pd.head(3)# 2.2) 业务经理信息表
# 筛选出 业务经理信息表 需要的列,并打印出前三行
manager_info_pd = data[['业务经理编号', '分区', '区域', '业务经理']]
# 去除重复行
manager_info_pd.drop_duplicates(inplace=True)
# 打印出前三行
manager_info_pd.head(3)# 3) 数据保存
cust_info_pd.to_excel(op_path+'客户信息表_pd.xlsx', index=None)
manager_info_pd.to_excel(op_path+'业务经理信息表_pd.xlsx', index=None)

三、pandas

1、官方文档

详细API参考官方文档:https://pandas.pydata.org/docs/reference/index.html
中文文档:https://www.pypandas.cn/

主要参考文档:
https://github.com/datawhalechina/office-automation/tree/main/Task02-Python%E4%B8%8EExcel

【python与excel】相关推荐

  1. python拆分excel的sheet为单文件_python拆分Excel表格并发送邮件

    工作中经常会出现需要将数据按一定的条件拆分并分发给不同的收件人的情况,今天就来给大家分享一下如何使用python拆分Excel表格并分发邮件. 以下表(2019年下半年销量数据表)数据为例: 首先我们 ...

  2. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据

    在使用python读取Excel文件中的时间格式,碰到的时间格式转换问题: 读取这样的表格: 输出这样的数据结果: 然而这样的结果却不是我们想要的,我们需要的是这样的结果: 1.安装python官方库 ...

  3. python连接excel存放数据_有了这篇python操作Excel学习笔记,以后储存数据 办公很轻松!...

    最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开始直接用Excel来处理.但是做着做着发现重复的劳动其实并没有多大的意义,于是就想着写个小工具帮着处理.以前正好在一本书上看到 ...

  4. 太赞!Python和Excel终于可以互通了

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 今天为大家分享一篇使用python将大量数据导出到Excel中的技巧心得,可以让Pyt ...

  5. python 表格格式输出_利用python对excel中一列的时间数据更改格式操作

    问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...

  6. python excel增加一列_(用Python修改excel中一列数据)python新增一列

    python怎么从excel中读取数据? ⒈ #import παέτο import xlrd #Ρύθμι διαδρής path='C:\\Users\\jyjh\\Desktop\\data ...

  7. 使用PYTHON操作Excel的工具

    作者:卓晴博士,清华大学自动化系 更新时间:2020-07-25 Saturday Python和Excel都是分析处理数据的很强大的工具.如果将它们结合在一起则更加的强大.由于自己经常处理一些Exc ...

  8. Python 与 Excel结合

    很多开发者说自从有了 Python/Pandas,Excel 都不怎么用了,用它来处理与可视化表格非常快速.但是这样还是有一大缺陷,操作不是可视化的表格,因此对技能要求更高一点.近日,开发者构建了名为 ...

  9. excel python 形状_何使用Python操作Excel绘制柱形图

    开发工具,环境 PyCharm Python3 Office Excel 我们已经创建好了一张Excel表. 现在我们要根据已有的数据,往里面添加柱形图. 柱形图 BarChart 我们主要使用Bar ...

  10. python处理excel文件的模块_python处理Excel文件的几个模块

    在python中简单地处理excel文件,有几个相关的模块,各有千秋,本文将不定时收录. Python Excel网站收集了关于python处理excel文件的各种信息. [注意]使用python处理 ...

最新文章

  1. System.currentTimeMillis()竟然存在性能问题,这我能信?
  2. svm 彻底的过程
  3. Git 删除远程仓库文件
  4. ZT Web Control 开发系列(一) 页面的生命周期
  5. xcode windows版安装使用教程
  6. matlab语音去除白噪声_全国首款“AI语音电梯”亮相海淀医院、北医三院
  7. python 调用opencv dll_【问题已解决】python 3.6下安装opencv-python解决cv2 DLL load failed: 找不到指定的模块问题...
  8. 如何才是真正的大牛?遇见同行博士大牛,感慨自己太渣
  9. 计算机的实现的理论基础
  10. html5 双水波加载动画,逼真的HTML5 3D水波动画 可多视角浏览
  11. Android 设备上实现串口的移植
  12. AS/400数据同步专家
  13. 阿里VIP会员看腾讯视频?这不是一个意外的选择
  14. Windows服务应用程序
  15. 苹果发布新款iPad Pro!就换了个「芯」,转换器骚操作笑翻网友
  16. 银联押宝二维码支付 背后还有一片纷争江湖
  17. 有两个列表 l1 =[11,22,33] l2 =[22,33,44]
  18. 麦马计算机专业对化学的要求,麦克马斯特大学有哪些专业处于世界顶尖水平?...
  19. 清除系统垃圾文件bat
  20. [小项目]手把手教你C语言哈夫曼压缩/解压缩

热门文章

  1. 好书推荐 -- 《智能时代》-- 吴军(著)
  2. 微信小程序防止后退,返回主页,30秒看完关闭
  3. sql server XML中value(),exists(),nodes()方法
  4. uboot构建框架6-u-boot.bin生成过程追踪
  5. OffiSmart Summit智慧办公及空间管理上海线下峰会精彩亮点抢先看
  6. Android 天气APP(三十六)运行到本地AS、更新项目版本依赖、去掉ButterKnife
  7. 图像处理之细化算法(Thinning Algorithm)C++实现
  8. 做一个人脸识别相关的毕业设计
  9. 大幅提升CLIP图像分类准确率-Tip-Adapter
  10. 团队协作常见问题分析与解决