技能标识:excel-studio
Professional Excel spreadsheet generator. Use when user needs to create data tables, reports, charts, financial models, or any structured data in Excel format. Supports .xlsx, .xls, .csv formats with multi-language, charts, formulas, and formatting. Excel电子表格生成、数据分析、财务报表。
专业的Excel电子表格生成器,支持完整格式化、图表、公式和多工作表。
请提供以下信息:
文档类型:(报表/数据分析/财务/其他)
格式要求:(xlsx/xls/csv)
Sheet数量:
数据内容:
图表需求:(柱状图/折线图/饼图/无)
语言:(中文/英文)
特殊要求:(公式/条件格式/数据验证等)
python
python3 << PYEOF
import os
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side, numbers
from openpyxl.chart import BarChart, LineChart, PieChart, Reference
from openpyxl.utils import getcolumnletter
from datetime import datetime
class ExcelGenerator:
def init(self):
self.wb = Workbook()
self.sheets = {}
def add_sheet(self, name, active=False):
添加新工作表
if active:
ws = self.wb.active
ws.title = name
else:
ws = self.wb.create_sheet(name)
self.sheets[name] = ws
return ws
def get_sheet(self, name):
按名称获取工作表
return self.sheets.get(name, self.wb.active)
def setcell(self, sheetname, row, col, value, format_type=None):
设置单元格值,可选格式
ws = self.getsheet(sheetname)
cell = ws.cell(row=row, column=col, value=value)
if format_type:
self.applyformat(cell, formattype)
return cell
def applyformat(self, cell, formattype):
对单元格应用格式
formats = {
header: {
font: Font(bold=True, size=12, color=FFFFFF),
fill: PatternFill(startcolor=3182CE, endcolor=3182CE, fill_type=solid),
alignment: Alignment(horizontal=center, vertical=center)
},
title: {
font: Font(bold=True, size=16),
alignment: Alignment(horizontal=center)
},
number: {
number_format: #,##0.00
},
percent: {
number_format: 0.00%
},
date: {
number_format: YYYY-MM-DD
},
currency: {
number_format: ¥#,##0.00
},
border: {
border: Border(
left=Side(style=thin),
right=Side(style=thin),
top=Side(style=thin),
bottom=Side(style=thin)
)
}
}
if format_type in formats:
for key, value in formats[format_type].items():
setattr(cell, key, value)
def writetable(self, sheetname, startrow, startcol, headers, data,
header_format=True, border=True):
写入格式化表格
ws = self.getsheet(sheetname)
# 写入表头
if headers:
for i, header in enumerate(headers):
cell = ws.cell(row=startrow, column=startcol + i, value=header)
if header_format:
self.apply_format(cell, header)
if border:
self.apply_format(cell, border)
# 写入数据
for rowidx, rowdata in enumerate(data, start=start_row + 1):
for colidx, value in enumerate(rowdata, start=start_col):
cell = ws.cell(row=rowidx, column=colidx, value=value)
if border:
self.apply_format(cell, border)
# 自动格式化数字
if isinstance(value, (int, float)):
cell.number_format = #,##0.00
return startrow, startcol, startrow + len(data), startcol + len(headers) - 1
def addchart(self, sheetname, charttype, datarange, title,
categories_range=None, position=E2):
向工作表添加图表
ws = self.getsheet(sheetname)
charts = {
bar: BarChart(),
line: LineChart(),
pie: PieChart()
}
chart = charts.get(chart_type, BarChart())
chart.title = title
chart.style = 10
# 添加数据
data = Reference(ws, mincol=datarange[0], minrow=datarange[1],
maxcol=datarange[2], maxrow=datarange[3])
chart.adddata(data, titlesfrom_data=True)
# 添加类别(如果提供)
if categories_range:
cats = Reference(ws, mincol=categoriesrange[0],
minrow=categoriesrange[1],
maxcol=categoriesrange[2],
maxrow=categoriesrange[3])
chart.set_categories(cats)
# 将图表添加到工作表
ws.add_chart(chart, position)
return chart
def setcolumnwidth(self, sheet_name, col, width):
设置列宽
ws = self.getsheet(sheetname)
ws.columndimensions[getcolumn_letter(col)].width = width
def autocolumnwidth(self, sheet_name):
自动调整列宽
ws = self.getsheet(sheetname)
for col in ws.columns:
max_length = 0
column = col[0].column_letter
for cell in col:
try:
if len(str(cell.value)) > max_length:
max_length = len(str(cell.value))
except:
pass
adjustedwidth = min(maxlength + 2, 50)
ws.columndimensions[column].width = adjustedwidth
def addformula(self, sheetname, row, col, formula):
向单元格添加公式
ws = self.getsheet(sheetname)
ws.cell(row=row, column=col, value=formula)
def mergecells(self, sheetname, startrow, startcol, endrow, endcol):
合并单元格
ws = self.getsheet(sheetname)
ws.mergecells(startrow=startrow, startcolumn=start_col,
endrow=endrow, endcolumn=endcol)
def save(self, output_path):
保存工作簿
self.wb.save(output_path)
return output_path
# 工作表 1:销售数据
ws1 = gen.add_sheet(销售数据, active=True)
# 标题
gen.merge_cells(销售数据, 1, 1, 1, 6)
titlecell = gen.setcell(销售数据, 1, 1, 2026年第一季度销售报告)
gen.applyformat(titlecell, title)
# 表头
headers = [月份, 产品A, 产品B, 产品C, 总计, 增长率]
gen.write_table(销售数据, 3, 1, headers, [])
# 数据
data = [
[1月, 150000, 230000, 180000, None, None],
[2月, 180000, 250000, 200000, None, None],
以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:
帮我安装 SkillHub 和 excel-studio-1776052217 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 excel-studio-1776052217 技能
skillhub install excel-studio-1776052217
文件大小: 6.62 KB | 发布时间: 2026-4-14 12:01