相关文章推荐
性感的小蝌蚪  ·  easyPOI ...·  2 周前    · 
没人理的油条  ·  typescript import ...·  12 月前    · 
痛苦的红金鱼  ·  jquery ...·  1 年前    · 
正直的荔枝  ·  javascript - ...·  1 年前    · 
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

图表的作用:

1、可直观展示统计信息属性(时间性、数量性等),对知识挖掘和信息直观生动感受起关键作用的图形结构,是一种很好的将对象属性数据直观、形象地"可视化"的手段

2、合理的数据图表,会更直观的反映数据间的关系,比用数据和文字描述更清晰、更易懂

3、将工作表中的数据转换成图表呈现,可以帮助我们更好地了解数据见的比例关系及变化趋势,对研究对象做出合理的推断和预测

常用方法与属性

openpyxl.chart.Reference(workbook,min_col,min_row,max_col,max_row) 设置图表数据的来源
workbook数据来源工作薄
min_col 开始列
min_row 开始行
max_col 结束列
max_row 结束行 chart.title  设置图表名 chart.x_axis.title  设置x轴名 chart.y_axis.title  设置y轴名 chart.add_data(data)  设置图表数据 sheet.add_chart(图表,位置) 给excel增加图表 data = Reference(sh,min_col=2,min_row=1,max_col=4,max_row=7) # 给图表增加数据 chart.add_data(data) # 设置图表的名称 chart.title = 'Line Chart' # 设置图表的x轴名 chart.x_axis.title = '时间' # 设置图表的y轴名 chart.y_axis.title = '数量' # 把图表增加到工作簿 sh.add_chart(chart,'A9') # 保存excel文件 wb.save('./create_data/18_折线图.xlsx') if __name__ =='__main__': set_line() # 给图表选择数据 data = Reference(sh,min_col=2,max_col=3,min_row=2,max_row=7) cats = Reference(sh,min_col=1,max_col=1,min_row=2,max_row=7) # 给图表增加数据 chart.add_data(data) chart.set_categories(cats) # 设置图表的名称 chart.title = 'Bar Chart' # 设置图表的x轴名 chart.x_axis.title = '月' # 设置图表的y轴名 chart.y_axis.title = '数量' # 把图表增加到工作簿 sh.add_chart(chart) # 保存excel文件 wb.save('./create_data/19_柱状图.xlsx') if __name__ =='__main__': set_bar() # 给图表选择数据 data = Reference(sh,min_col=2,max_col=2,min_row=2,max_row=5) cate = Reference(sh,min_col=1,min_row=2,max_row=5) # 给图表增加数据 chart.add_data(data) chart.set_categories(cate) # 设置图表的名称 chart.title = 'Pie Chart' # 把图表增加到工作簿 sh.add_chart(chart) # 保存excel文件 wb.save('./create_data/20_饼状图.xlsx') if __name__ =='__main__': set_pie()
from openpyxl import load_workbook
def merger_file():
  from openpyxl import Workbook,load_workbook
  # 创建一个新的excel文件,用来存储合并好的数据
  wb = Workbook()
  # 激活当前的Sheet
  sh = wb.active
  # 获取文件
  import os
  names = os.listdir('./base_data/销售表')
  for name in names:
    load_path = f'./base_data/销售表/{name}'
    # 读取文件
    tmp_wb = load_workbook(load_path)
    # 激活读取的文件的Sheet
    tmp_sh = tmp_wb.active
    # 获取里面的数据
    for r in range(2,tmp_sh.max_row+1):
      # 建立一个列表来保存数据
      row_data = []
      for c in range(1,tmp_sh.max_column+1):
        # 通过行和列的索引获取数据
        value = tmp_sh.cell(r,c).value
        # 将当前列的数据增加到一行中记录
        row_data.append(value)
      # 将当前行数据增加到新的excel中
      sh.append(row_data)
  wb.save('./create_data/21_合并多个文件.xlsx')
if __name__ == '__main__':
  merger_file()
tmp_sh = tmp_wb.active # 在新的excel中创建一个新的Sheet,名称为合并的文件名 new_sh = wb.create_sheet(sheet_name) # 获取行数据 for r in range(1,tmp_sh.max_row+1): # 定义一个列表用来存储当前行的所有数据 all_data = [] # 获取列数据 for c in range(1,tmp_sh.max_column+1): value = tmp_sh.cell(r,c).value all_data.append(value) # 将数据保存到新的excel中 new_sh.append(all_data) # 删除自动生成的Sheet del wb['Sheet'] # 保存新Excel文件修改 wb.save('./create_data/22_合并多个文件2.xlsx') if __name__ == '__main__': merger_file() from openpyxl import load_workbook,Workbook # 加载文件,data_only=True代表显示值 wb = load_workbook('./base_data/工资数据.xlsx',data_only=True) sh = wb.active # 读取数据-遍历每行数据 # 建立一个title列表,用于存储标题 title = [] for i,r in enumerate(sh.rows): # 判断是否第一行数据 if i == 0: for c in r: title.append(c.value) else: row_data=[] for c in r: row_data.append(c.value) # 创建一个新的excel文件 new_wb = Workbook() # 激活Sheet new_sh = new_wb.active # 增加数据 new_sh.append(title) new_sh.append(row_data) # 保存数据 new_wb.save(f'./create_data/gong_zi/{r[1].value}.xlsx') if __name__ == '__main__': create_excel() from datetime import date from openpyxl import Workbook from openpyxl.styles import PatternFill # 创建一个excel对象 wb = Workbook() # 激活Sheet sh = wb.active # 增加数据 rows = [ ['Date', 'Batch 1', 'Batch 2','Batch 3'], [date(2030,12, 1), 40, 30, 25], [date(2030,12, 2), 40, 25, 30], [date(2030,12, 3), 50, 30, 45], [date(2030,12, 4), 30, 25, 40], [date(2030,12, 5), 25, 35, 30], [date(2030,12, 6), 20, 40, 35], for r in rows: sh.append(r) # 创建样式 bg_color = PatternFill('solid',fgColor='AEEEEE') # 设置样式 for r in range(1,sh.max_row+1): if r%2==0: for c in range(1,sh.max_column+1): sh.cell(r,c).fill = bg_color # 保存excel文件 wb.save('./create_data/23_隔行换色.xlsx') if __name__ == '__main__': create_excel() ['Date', '姓名', '打卡时间'], [date(2030,12, 1), '吕小布','18:50'], [date(2030,12, 2),'貂的蝉','18:10'], [date(2030,12, 3),'刘备','18:02'], [date(2030,12, 4),'吕小布','18:50'], [date(2030,12, 5), '张飞','19:22'], [date(2030,12, 6), '吕小布','18:50'], for row in rows: sh.append(row) wb.save('./create_data/24_统计加班时间.xlsx') def statistics(): from openpyxl import load_workbook,Workbook # 读取数据 wb = load_workbook('./create_data/24_统计加班时间.xlsx') sh = wb.active data = [] for row in range(2,sh.max_row+1): # 一条完整的数据 row_data = [] for col in range(1,sh.max_column+1): value = sh.cell(row,col).value row_data.append(value) # 统计时间 # 获取时间 h,m = row_data[2].split(':') # 计算时间 从0:00到打卡的时间 full = int(h)*60 + int(m) rs = full - 18*60 # 将结果保存到最后一列 row_data.append(rs) #------处理时间 显示问题------ row_data[0] = row_data[0].date() data.append(row_data) wb = Workbook() sh = wb.active for d in data: sh.append(d) wb.save('./create_data/24_统计加班时间.xlsx') if __name__ == '__main__': create_excel() statistics()