将图表功能写成函数,并且在excelserver中调用函数实现创建图表

Excel
芦笙 10 months ago
parent f4ab70dd0c
commit db42f2f9e7

@ -15,88 +15,7 @@ class ExcelService(IFileService):
tttt.calculate_ratio_and_update(filePath, 'Sheet') tttt.calculate_ratio_and_update(filePath, 'Sheet')
import openpyxl import openpyxl
from openpyxl.chart import ScatterChart, BarChart, AreaChart, Reference from openpyxl.chart import ScatterChart, BarChart, AreaChart, Reference
tttt.create_bar_chart(filePath,'Sheet')
# 读取Excel文件
wb = openpyxl.load_workbook('bilibili_videos.xlsx')
ws = wb.active
# 创建柱状图1
bar_chart1 = BarChart()
bar_chart1.title = "观众对于视频的认可度"
bar_chart1.y_axis.title = "Data"
bar_chart1.x_axis.title = "Index"
# 设置柱状图1数据
bar_data1 = Reference(ws, min_col=17, min_row=2, max_row=ws.max_row)
bar_categories1 = Reference(ws, min_col=2, min_row=2, max_row=ws.max_row)
bar_chart1.add_data(bar_data1, titles_from_data=True)
bar_chart1.set_categories(bar_categories1)
# 添加柱状图1到工作表
ws.add_chart(bar_chart1, "V1")
# 创建柱状图
bar_chart = BarChart()
bar_chart.title = "收益"
bar_chart.y_axis.title = "Data"
bar_chart.x_axis.title = "Index"
# 设置柱状图数据
bar_data = Reference(ws, min_col=18, min_row=2, max_row=ws.max_row)
bar_categories = Reference(ws, min_col=2, min_row=2, max_row=ws.max_row)
bar_chart.add_data(bar_data, titles_from_data=True)
bar_chart.set_categories(bar_categories)
# 添加柱状图到工作表
ws.add_chart(bar_chart, "AD1")
# 创建面积图
area_chart = AreaChart()
area_chart.title = "视频实用性"
area_chart.y_axis.title = "Data"
area_chart.x_axis.title = "Index"
# 设置面积图数据
area_data = Reference(ws, min_col=19, min_row=2, max_row=ws.max_row)
area_categories = Reference(ws, min_col=2, min_row=2, max_row=ws.max_row)
area_chart.add_data(area_data, titles_from_data=True)
area_chart.set_categories(area_categories)
# 添加面积图到工作表
ws.add_chart(area_chart, "AL1")
# 创建柱状图
bar_chart_2 = BarChart()
bar_chart_2.title = "视频惊艳程度"
bar_chart_2.y_axis.title = "Data"
bar_chart_2.x_axis.title = "Index"
# 设置柱状图数据
bar_data_2 = Reference(ws, min_col=20, min_row=2, max_row=ws.max_row)
bar_categories_2 = Reference(ws, min_col=2, min_row=2, max_row=ws.max_row)
bar_chart_2.add_data(bar_data_2, titles_from_data=True)
bar_chart_2.set_categories(bar_categories_2)
# 添加柱状图到工作表
ws.add_chart(bar_chart_2, "AT1")
# 创建柱状图
bar_chart_3 = BarChart()
bar_chart_3.title = "视频的互动性"
bar_chart_3.y_axis.title = "Data"
bar_chart_3.x_axis.title = "Index"
# 设置柱状图数据
bar_data_3 = Reference(ws, min_col=21, min_row=2, max_row=ws.max_row)
bar_categories_3 = Reference(ws, min_col=2, min_row=2, max_row=ws.max_row)
bar_chart_3.add_data(bar_data_3, titles_from_data=True)
bar_chart_3.set_categories(bar_categories_3)
# 添加柱状图到工作表
ws.add_chart(bar_chart_3, "BB1")
# 保存Excel文件
wb.save('bilibili_videos_with_charts.xlsx')
texts = [ texts = [
"approve", "approve",

@ -36,7 +36,7 @@ if __name__ == '__main__':
] ]
# 将测试数据写入 Excel 文件 # 将测试数据写入 Excel 文件
write_to_excel(test_cases, 'bilibili_videos.xlsx') write_to_excel(test_cases, 'bilibili_videos_with_charts.xlsx')
@ -82,36 +82,39 @@ def calculate_ratio_and_update(file_path, sheet_name):
wb.save(file_path) wb.save(file_path)
if __name__ == '__main__': if __name__ == '__main__':
# 示例用法 # 示例用法
file_path = 'bilibili_videos.xlsx' # Excel 文件路径 file_path = 'bilibili_videos_with_charts.xlsx' # Excel 文件路径
sheet_name = 'Sheet' # 工作表名称 sheet_name = 'Sheet' # 工作表名称
calculate_ratio_and_update(file_path, sheet_name) calculate_ratio_and_update(file_path, sheet_name)
print("Data analysis written to the Excel file.") print("Data analysis written to the Excel file.")
if __name__ == '__main__':
import openpyxl import openpyxl
from openpyxl.chart import ScatterChart, BarChart, AreaChart, Reference from openpyxl.chart import BarChart, Reference, AreaChart
def create_bar_chart(file_name, sheet_name):
# 读取Excel文件 # 读取Excel文件
wb = openpyxl.load_workbook('bilibili_videos.xlsx') wb = openpyxl.load_workbook(file_name)
ws = wb.active ws = wb[sheet_name]
# 创建柱状图
bar_chart = BarChart()
bar_chart.title = "观众对于视频的认可度"
bar_chart.y_axis.title = "Data"
bar_chart.x_axis.title = "Index"
# 创建柱状图1 # 设置柱状图数据
bar_chart1 = BarChart() bar_data = Reference(ws, min_col=17, min_row=2, max_row=ws.max_row)
bar_chart1.title = "观众对于视频的认可度" bar_categories = Reference(ws, min_col=2, min_row=2, max_row=ws.max_row)
bar_chart1.y_axis.title = "Data" bar_chart.add_data(bar_data, titles_from_data=True)
bar_chart1.x_axis.title = "Index" bar_chart.set_categories(bar_categories)
# 添加柱状图到工作表
ws.add_chart(bar_chart, "V1")
# 设置柱状图1数据
bar_data1 = Reference(ws, min_col=17, min_row=2, max_row=ws.max_row)
bar_categories1 = Reference(ws, min_col=2, min_row=2, max_row=ws.max_row)
bar_chart1.add_data(bar_data1, titles_from_data=True)
bar_chart1.set_categories(bar_categories1)
# 添加柱状图1到工作表 # 调用函数并传入文件名和工作表名
ws.add_chart(bar_chart1, "V1")
# 创建柱状图 # 创建柱状图
bar_chart = BarChart() bar_chart = BarChart()
@ -176,6 +179,11 @@ if __name__ == '__main__':
# 保存Excel文件 # 保存Excel文件
wb.save('bilibili_videos_with_charts.xlsx') wb.save('bilibili_videos_with_charts.xlsx')
if __name__ == '__main__':
create_bar_chart('bilibili_videos_with_charts.xlsx', 'Sheet')
def write_english_texts(file_path, sheet_name, texts): def write_english_texts(file_path, sheet_name, texts):
# 打开 Excel 文件 # 打开 Excel 文件
wb = openpyxl.load_workbook(file_path) wb = openpyxl.load_workbook(file_path)

Loading…
Cancel
Save