修改excel,openpyxl

from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.chart import BarChart, Series, Reference, BarChart3D
from openpyxl.styles import Color, Font, Alignment
from openpyxl.styles.colors import BLUE, RED, GREEN, YELLOW
class Write_excel(object):
    
  def __init__(self,filename,sheet=0):
    self.filename = filename
    self.wb = load_workbook(self.filename)
    if isinstance(sheet,int):
        self.ws = self.wb.worksheets[sheet] # 按索引选择工作表
    elif isinstance(sheet,str):
        self.ws = self.wb[sheet] # 按表名选择工作表
#     self.ws = self.wb.active  #激活工作表 

  # 赋值单元格数据
  def write(self, coord, value):
    # eg: coord:(2,3)
    if isinstance(coord,tuple):
        self.ws.cell(*coord).value = value
    else:
    # eg: coord:A1
        self.ws[coord] = value
    self.wb.save(self.filename)
    
  # 合并单元格
  def merge(self, rangstring):
    # eg: rangstring:A1:E1
    self.ws.merge_cells(rangstring)
    self.wb.save(self.filename)
    
  # 设置单元格样式
  def cellstyle(self, coord, font, align):
    # eg: coord:(2,3)
    if isinstance(coord,tuple):
        cell = self.ws.cell(*coord)
    else:
    # eg: coord:A1
        cell = self.ws[coord]
    cell.font = font
    cell.alignment = align
# 使用上面的类
wr = Write_excel('t1.xlsx',sheet=0) 
wr.merge('A1:B3')  # 合并单元格
font = Font(name=u'宋体', size=14, color=RED, bold=True)  # 设置字体样式
align = Alignment(horizontal='center', vertical='center')  # 居中
wr.cellstyle('A1', font, align)  # 应该先设置样式,再写内容
wr.write("A1","朱一龙站子数据")
# 单独使用
from openpyxl import Workbook
wb = Workbook()#创建工作簿 
ws = wb.active#激活工作表 
ws1 = wb.create_sheet("Mysheet")#创建mysheet表 
ws.title = "New Title"#表明改为New Title 
ws.sheet_properties.tabColor = "1072BA"#表名的颜色 
ws['A4'] = 4#赋值 
d = ws.cell(row=4, column=2, value=10)#赋值 
cell_range = ws['A1':'C2']#选择单元格区域 
ws1["A1"] = "aaa"
wb.save('test.xlsx')
# 生成图表
# 详见http://openpyxl.readthedocs.io/en/stable/charts/bar.html
from openpyxl import Workbook
from openpyxl.chart import BarChart, Series, Reference
 
wb = Workbook(write_only=True)
ws = wb.create_sheet()
 
rows = [
    ('Number', 'Batch 1', 'Batch 2'),
    (2, 10, 30),
    (3, 40, 60),
    (4, 50, 70),
    (5, 20, 10),
    (6, 10, 40),
    (7, 50, 30),
]
 
for row in rows:
    ws.append(row)
 
chart1 = BarChart()
chart1.type = "col"
chart1.style = 10
chart1.title = "Bar Chart"
chart1.y_axis.title = 'Test number'
chart1.x_axis.title = 'Sample length (mm)'
 
data = Reference(ws, min_col=2, min_row=1, max_row=7, max_col=3)  # 纵坐标的数据区
cats = Reference(ws, min_col=1, min_row=2, max_row=7) # 横坐标的数据区
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(cats)
chart1.shape = 4
ws.add_chart(chart1, "A10")
 
from copy import deepcopy
 
chart2 = deepcopy(chart1)
chart2.style = 11
chart2.type = "bar"
chart2.title = "Horizontal Bar Chart"
ws.add_chart(chart2, "G10")
 
chart3 = deepcopy(chart1)
chart3.type = "col"
chart3.style = 12
chart3.grouping = "stacked"
chart3.overlap = 100
chart3.title = 'Stacked Chart'
ws.add_chart(chart3, "A27")
 
chart4 = deepcopy(chart1)
chart4.type = "bar"
chart4.style = 13
chart4.grouping = "percentStacked"
chart4.overlap = 100
chart4.title = 'Percent Stacked Chart'
ws.add_chart(chart4, "G27")
 
wb.save("bar.xlsx")

# 从已有excel中读数据生成图表
from openpyxl import Workbook,load_workbook
from openpyxl.chart import BarChart, Series, Reference
 
wb = load_workbook("bar.xlsx")
ws = wb.worksheets[0]
 

 
chart1 = BarChart()
chart1.type = "col"
chart1.style = 10
chart1.title = "测试图表"
chart1.y_axis.title = '数据'
chart1.x_axis.title = '姓名'
 
data = Reference(ws, min_col=2, min_row=1, max_row=7, max_col=4)  # 纵坐标的数据区,包括标题
cats = Reference(ws, min_col=1, min_row=2, max_row=7) # 横坐标的数据区,不包括标题
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(cats)
chart1.shape = 4
ws.add_chart(chart1, "A10")
 
 
wb.save("bar.xlsx")
image.png
from openpyxl import Workbook,load_workbook
from openpyxl.chart import BarChart, Series, Reference,PieChart
import pandas as pd

df = pd.read_excel("t1.xlsx",sheet_name=0,header=1,index_col="序号")

wb = load_workbook("t1.xlsx")
ws = wb.worksheets[0]


# 将 个人kol、个人KOL、kol统一成 个人kol
df["小分类"][df["小分类"].str.lower().str.contains("kol")] = "个人kol"


# 大分类画图
type1_dic = dict(df["大分类"].value_counts())

# 将个人kol放在最后行,且不在图表中显示
ws.cell(2,7).value = "类型"
ws.cell(2,8).value = "数量"

index = 3
for key,value in type1_dic.items():
    ws.cell(index,7).value = key
    ws.cell(index,8).value = type1_dic[key]
    index +=1



# 柱状图
chart1 = BarChart()
chart1.type = "col"
chart1.style = 10
chart1.title = "站子大分类柱状图"
chart1.y_axis.title = '类型'
chart1.x_axis.title = '数量'
data = Reference(ws,  min_col=8, min_row=2,max_col=8, max_row=index-1)  # 纵坐标的数据区,包括标题
cats = Reference(ws, min_col=7, min_row=3, max_row=index-1) # 横坐标的数据区,不包括标题
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(cats)
chart1.shape = 4
ws.add_chart(chart1, "K2")
 


# 饼图
pie = PieChart()
labels = Reference(ws, min_col=7, min_row=3, max_row=index-1)  # 横坐标的数据区,不包括标题(类别)
data =Reference(ws, min_col=8, min_row=2, max_row=index-1) # 纵坐标的数据区,包括标题(值)
pie.add_data(data, titles_from_data=True)
pie.set_categories(labels)
pie.title = "站子大分类饼图"
ws.add_chart(pie, "V2")



wb.save("t1.xlsx")   
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352