使用Free Spire.XLS插入图表

前言

最近在研究Office中间件,上网搜索了下,比较出名的有两个:Aspose和Spire,两者功能齐全,对Office的支持趋近完善,但售价不菲。仔细搜索下,发现Spire系列还有免费版的产品,相对商业版本,在性能和文件转换功能上有缩水。通过一段时间的使用后,我发现免费版本能够满足我的大部分需求。所以写下这篇文章,和大家分享一下我的使用心得,这里我使用的是Free Spire.XLS,根据文中中的数据插入图表并保存。

准备

首先从CodePlex(https://freenetexcel.codeplex.com/)上下载Free Spire.XLS,然后引用Spire.License.dll和Spire.XLS.dll到工程中,如下图所示:

步骤

1.载入一个现有的Excel文档,里面已经包含生成图表所需的数据。

Workbook wb = new Workbook();
wb.LoadFromFile("Test.xlsx", ExcelVersion.Version2010);
Worksheet ws = wb.Worksheets[];

2.创建一个条形图表,并设置图表的数据区域和位置。

//Create a coulumn clustered chart
Chart chart = ws.Charts.Add(ExcelChartType.ColumnClustered);
//Set region of chart data
chart.DataRange = ws.Range["A1:C5"];
chart.SeriesDataFromRange = false;
//Set position of chart
chart.LeftColumn = ;
chart.TopRow = ;
chart.RightColumn = ;
chart.BottomRow = ;
 

3. 设置图表标题格式以及两条坐标轴的格式。

//Chart title
chart.ChartTitle = "Sales market by country";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = ;
//Chart primary category axis
chart.PrimaryCategoryAxis.Title = "Country";
chart.PrimaryCategoryAxis.Font.IsBold = true;
chart.PrimaryCategoryAxis.TitleArea.IsBold = true;
//Chart primary value axis
chart.PrimaryValueAxis.Title = "Sales(in Dollars)";
chart.PrimaryValueAxis.HasMajorGridLines = false;
chart.PrimaryValueAxis.MinValue = ;
chart.PrimaryValueAxis.TitleArea.IsBold = true;
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = -;
 

4. 显示数据标签,并将位置设定为“居中”。

//Format data labels
foreach (ChartSerie cs in chart.Series)
{
    cs.Format.Options.IsVaryColor = true;
    cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = true;
    cs.DataPoints.DefaultDataPoint.DataLabels.Position = DataLabelPositionType.Center;
}

5. 设置图例位置为“底部”,然后保存文件到磁盘。

chart.Legend.Position = LegendPositionType.Bottom;
wb.SaveToFile("Sample.xlsx",ExcelVersion.Version2010);

生成的Excel文档如下图所示:

总结

网上不乏第三方操作excel的组件,Free Spire.XLS的优势在于免费易用,功能齐全,但最多只能处理5个工作簿,每个工作簿最多150行数据,这些是免费版本的限制。不过对于我来说已经足够了。

最新文章

  1. 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记
  2. matlab函数大全
  3. WORD 粘贴代码 不检查语法
  4. C++类的内存分配
  5. 解决Eclipse报errors running builder ‘javascript validator’ on project
  6. 测试App运行状态
  7. 【译】 AWK教程指南 附录C-AWK的内建函数
  8. nyoj 1022 合纵连横【并查集节点的删除】
  9. 栈 <stack>
  10. [6278009]使用Visual Stuido Code 编写Markdown
  11. 得分(Score, ACM/ICPC Seoul 2005,UVa 1585)
  12. Maven详解(七)------ 创建Web工程以及插件原理
  13. SQLite事务与自增深度分析
  14. python--使用递归的方式建立二叉树
  15. javascript中apply()和call()方法及区别
  16. 集体干死java 在启动.sh
  17. delphi执行一个外部程序,当外部程序结束后,delphi程序立即响应
  18. Find the Duplicate Number (寻找重复数字)
  19. winfrom 界面编辑之疑难杂症
  20. 最全Pycharm教程(26)——Pycharm搜索导航之文件名、符号名搜索(转)

热门文章

  1. android studio/Intellij idea之proguard实践
  2. 如何将本地的jar包上传到maven本地仓库中
  3. 利用http缓存数据
  4. Java虚拟机
  5. android——数据库版本升/降级问题
  6. Coping with the TCP TIME-WAIT state on busy Linux servers
  7. 一步步学习javascript基础篇(5):面向对象设计之对象继承(原型链继承)
  8. 【腾讯优测干货分享】越用越卡为哪般——如何降低App的待机内存(一)
  9. Python黑帽编程2.6 模块
  10. 备忘录:hadoop技术一点积累