C# Interop PPT Microsoft Graph 图表使用经验
作者:V君 发布于:2013-10-28 16:56 Monday 分类:挖坑经验
过去的录制宏的方式已经不适用 -- 只能看到选定项, 更改格式的代码没有录制出来... 但通过一边编辑, 一边查看变量值的方式 甚至要将界面上的中文翻译成英文来搜索 (依据数点分颜色-咕狗翻译-Vary colors by point) 不过最后还是要归功于.NET Reflector -- 把interop库丢进去 用关键字搜索类名/成员 总算跌跌撞撞的走过来啦
▲环境 Visual Studio 2012 Office 2003 ▲引用程序集(COM) Microsoft Office 11.0 Object Library Microsoft PowerPoint 11.0 Object Library Microsoft Graph 11.0 Object Library using Microsoft.Office.Core; using Interop = Microsoft.Office.Interop; 略去创建PPT实例初始化过程, 网上很多资料 这里只贴出查不到的, 自己尝试的成果
- 废话少说直接上代码 -
//转换成互操作专用的RGB值 从StackOverflow抄来的,原帖的十六进制还错了
//格字体设置 ※单元格必须不为空,至少要有一个空格,否则赋值无效
//创建对象
var sh = sl.Shapes.AddOLEObject(
Left: template.Left,
Top: template.Top,
Width: template.Width,
Height: template.Height,
ClassName: "MSGraph.Chart",
Link: MsoTriState.msoFalse
);
var ch = (Interop.Graph.Chart)sh.OLEFormat.Object;
//填充数据
var ds = ch.Application.DataSheet;
ds.Columns.Clear(); //清除默认示例数据
//开始填充
ds.Cells[1, 2] = "Col1"; //首列保留, 虽不懂但亲测
ds.Cells[1, 3] = "Col2";
ds.Cells[2, 2] = "123";
ds.Cells[2, 3] = "234";
//清除图例
ch.Legend.Clear();
//设置背景色
ch.ChartArea.Interior.Color = RGB(Color.White);
//图表标题
ch.HasTitle = true; //不设置将会发生异常
ch.ChartTitle.Text = "TOTAL " + strCountryAbbr + " SPEND";
//坐标轴/背景墙设置
//ch.HasAxis[1] = true; //只留下横坐标轴
ch.HasAxis[2] = false;
ch.HasAxis[3] = false;
ch.Walls.Border.LineStyle =
Interop.Graph.XlLineStyle.xlLineStyleNone;
//横坐标轴只留文字
var a1 = (Interop.Graph.Axis)ch.Axes(1);
a1.TickLabels.Font.Size = 12;
a1.Border.LineStyle =
Interop.Graph.XlLineStyle.xlLineStyleNone;
var a2 = (Interop.Graph.Axis)ch.Axes(2);
a2.HasMajorGridlines = false;
//数值标到图形上,还有调整数值格式(科学转千分位)
var s1 = (Interop.Graph.Series)ch.SeriesCollection(1);
s1.HasDataLabels = true;
var l1 = (Interop.Graph.DataLabel)s1.DataLabels(1);
var l2 = (Interop.Graph.DataLabel)s1.DataLabels(2);
l1.NumberFormat =
l2.NumberFormat =
"#,##0_);(#,##0)";//这里是为啥我也不清楚, 界面调好之后查看变量值的..
l1.Font.Size =
l2.Font.Size =
12;//调小一点字体避免换行
//3D调整
//尼玛ppt界面里归纳到数据系列, 代码却是Chart的属性...
//我不会说在这里找了半个小时 -- 自己挨个属性尝试
//尼玛ppt界面里归纳到数据系列, 代码却是Chart的属性...
//我不会说在这里找了半个小时 -- 自己挨个属性尝试
ch.DepthPercent = 100;
ch.Elevation = 15;
ch.GapDepth = 100;
//边框 && 基底颜色
ch.ChartArea.Border.LineStyle = Interop.Graph.XlLineStyle.xlContinuous;
ch.Floor.Interior.Color = RGB(Color.White);
//柱形颜色 - 依数据点分颜色
//这里我折腾了两个小时, 尝试各种颜色设定值 -- 咕狗没有答案
//这里我折腾了两个小时, 尝试各种颜色设定值 -- 咕狗没有答案
var cg = (Interop.Graph.ChartGroup)ch.ChartGroups(1);
cg.VaryByCategories = true;
//------------- 常用功能 ----------------
//转换成互操作专用的RGB值 从StackOverflow抄来的,原帖的十六进制还错了
public static int RGB(this Color c)
{
return c.R + 0x100 * c.G + 0x10000 * c.B;
}
//格字体设置 ※单元格必须不为空,至少要有一个空格,否则赋值无效
public static void SetFontSize(
this Interop.PowerPoint.Table tbl
, float sz
)
{
for (int i = 1; i <= tbl.Rows.Count; i++)
for (int j = 1; j <= tbl.Columns.Count; j++)
tbl.Cell(i, j).Shape.TextFrame.TextRange.Font.Size = sz;
}
- 代码结束 - ps:消灭这个月的0文章~
blogger
Google Web Translator
热门日志
随机日志
最新日志
最新评论
- V君
@Quartz:(出现)... - Quartz
怎么不见人了呢... - V君
@Soar:DHCP 协议相... - V君
@Soar:当然是非... - Soar
@V君:谢谢 有空... - Soar
搞一个 1230v3+B85... - V君
@Soar:另外,也可... - V君
@Soar:iscsi服务端... - Soar
难怪这么卡,尤其... - Soar
clone了源码,提示...
分类
存档
- 2024年5月(1)
- 2023年7月(1)
- 2023年5月(1)
- 2022年11月(1)
- 2022年10月(1)
- 2022年9月(1)
- 2022年8月(1)
- 2022年7月(1)
- 2022年6月(1)
- 2022年5月(2)
- 2022年4月(1)
- 2022年3月(1)
- 2022年2月(1)
- 2022年1月(1)
- 2021年12月(1)
- 2021年11月(1)
- 2021年10月(1)
- 2021年9月(1)
- 2021年8月(1)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(1)
- 2021年4月(1)
- 2021年3月(1)
- 2021年2月(1)
- 2021年1月(1)
- 2020年12月(1)
- 2020年11月(1)
- 2020年10月(2)
- 2020年9月(1)
- 2020年8月(1)
- 2020年7月(1)
- 2020年6月(1)
- 2020年5月(1)
- 2020年4月(2)
- 2020年3月(3)
- 2020年2月(1)
- 2020年1月(1)
- 2019年12月(1)
- 2019年11月(1)
- 2019年10月(1)
- 2019年9月(1)
- 2019年8月(2)
- 2019年7月(1)
- 2019年6月(1)
- 2019年5月(1)
- 2019年4月(1)
- 2019年3月(1)
- 2019年2月(1)
- 2019年1月(2)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(3)
- 2018年9月(4)
- 2018年8月(6)
- 2018年7月(4)
- 2018年6月(1)
- 2018年5月(2)
- 2018年4月(2)
- 2018年3月(3)
- 2018年2月(1)
- 2018年1月(1)
- 2017年12月(1)
- 2017年10月(2)
- 2017年9月(1)
- 2017年8月(2)
- 2017年7月(1)
- 2017年6月(5)
- 2017年5月(2)
- 2017年4月(2)
- 2017年3月(3)
- 2017年2月(2)
- 2017年1月(2)
- 2016年12月(3)
- 2016年11月(2)
- 2016年10月(3)
- 2016年9月(4)
- 2016年8月(2)
- 2016年7月(4)
- 2016年6月(3)
- 2016年5月(1)
- 2016年4月(4)
- 2016年3月(3)
- 2016年2月(1)
- 2016年1月(5)
- 2015年12月(4)
- 2015年11月(5)
- 2015年10月(1)
- 2015年9月(6)
- 2015年8月(4)
- 2015年7月(1)
- 2015年6月(6)
- 2015年5月(3)
- 2015年4月(3)
- 2015年3月(2)
- 2015年2月(1)
- 2015年1月(3)
- 2014年12月(1)
- 2014年11月(1)
- 2014年10月(1)
- 2014年9月(3)
- 2014年8月(1)
- 2014年7月(1)
- 2014年6月(1)
- 2014年5月(3)
- 2014年4月(1)
- 2014年3月(1)
- 2014年2月(2)
- 2014年1月(1)
- 2013年12月(2)
- 2013年11月(2)
- 2013年10月(1)
- 2013年9月(3)
- 2013年8月(14)
- 2013年7月(7)
- 2013年4月(1)
- 2013年3月(4)
- 2013年2月(6)
- 2013年1月(6)
- 2012年12月(8)
- 2012年11月(6)
发表评论: