三沣开发知识 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> C# -> [C#]使用Gembox.SpreadSheet向Excel写入数据及图表 -> 正文阅读
 

[C#][C#]使用Gembox.SpreadSheet向Excel写入数据及图表

[C#]使用Gembox.SpreadSheet向Excel写入数据及图表 本文为原创文章、源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称、作者及网址,谢谢!
开发工具:VS2017
语言:C#
DotNet版本:.Net FrameWork 4.0及以上
使用的DLL工具名称:GemBox.Spreadsheet.dll (版本:37.3.30.1185)
一、GemBox.Spreadsheet工具:
该DLL是由GemBox公司开发的基于Excel功能的开发工具,该DLL很轻量,且使用起来很方便,在这里推荐下来来使用。
下载地址:

https://pan.baidu.com/s/1slcBUqh

本文就是使用该工具进行Excel的写入操作。
二、创建Excel
为了能使用该DLL,必须在调用前写入以下代码:

SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");

创建Excel文件如下:

ExcelFile excel = new ExcelFile();

这里仅仅只是创建一个excel,代表的是excel整个文件,而保存该文件的代码如下:

excel.Save("文件路径");

三、给Excel添加一些属性
我们可以给excel添加一些诸如文档标题、作者、公司及备注等内容,实现这些内容的代码如下:

excel.DocumentProperties.BuiltIn.Add(new KeyValuePair<BuiltInDocumentProperties, string>(BuiltInDocumentProperties.Title, TITLE));
excel.DocumentProperties.BuiltIn.Add(new KeyValuePair<BuiltInDocumentProperties, string>(BuiltInDocumentProperties.Author, "CNXY"));
excel.DocumentProperties.BuiltIn.Add(new KeyValuePair<BuiltInDocumentProperties, string>(BuiltInDocumentProperties.Company, "CNXY"));
excel.DocumentProperties.BuiltIn.Add(new KeyValuePair<BuiltInDocumentProperties, string>(BuiltInDocumentProperties.Comments, "By CNXY.Website: http://www.cnc6.cn"));

四、给excel默认字体
这是给整个Excel设置统一的字体,具体代码如下:

excel.DefaultFontName = "Times New Roman";

五、添加一个Sheet表格
要知道,Excel是由Sheet表格构成的,因此添加Sheet表格的代码如下:

ExcelWorksheet sheet = excel.Worksheets.Add("表格名称");

以上,已经在excel上添加了一个名为“表格名称”的数据表格。
六、给Sheet添加密码保护
有时候,为了保护自己的Excel不被篡改,需要设置一下Sheet的密码,具体代码如下:

sheet.ProtectionSettings.SetPassword("cnxy");
sheet.Protected = true;

七、让网格线不可见
默认情况下,Sheet的网格线是可见的,有时候,我们可以设置网格线不可见,具体代码如下:

sheet.ViewOptions.ShowGridLines = false;

八、写入单元格
访问单元格的方式有三种,三种分别如下:

sheet.Cells["A1"]
sheet.Cells[0,0]
sheet.Rows[0].Cells[0]

以上三种方法都可以访问单元格,但如下写入单元格呢,其实方法很简单,如下:

sheet.Cells["A1"].Value= 内容

以上没有加双引号的原因是:内容不一定是字符串,有可能是数字、日期等。
九、单元格样式设置
单元格设置需要使用CellStyle对象,其代码如下:

CellStyle style = new CellStyle();
//设置水平对齐模式
style.HorizontalAlignment = HorizontalAlignmentStyle.Center;
//设置垂直对齐模式
style.VerticalAlignment = VerticalAlignmentStyle.Center;
//设置字体
style.Font.Size = 22 * PT; //PT=20
style.Font.Weight = ExcelFont.BoldWeight;
style.Font.Color = Color.Blue;
sheet.Cells["A1"].Style = style;

填充方式如下:

sheet.Cells[24,1].Style.FillPattern.PatternStyle = FillPatternStyle.Solid;          
sheet.Rows[24].Cells[1].Style.FillPattern.PatternForegroundColor = Color.Gainsboro;

设置边框如下:

style.Borders.SetBorders(MultipleBorders.Outside, Color.Black, LineStyle.Thin);

十、合并单元格
合并单元格需使用CellRange对象,我们可以从sheet.Cells.GetSubrange或GetSubrangeAbsolute获得,代码如下:

CellRange range = sheet.Cells.GetSubrange("B2", "J3");
range.Value = "Chart";
range.Merged = true;


sheet.Cells.GetSubrangeAbsolute(24, 1, 24, 9).Merged = true;

十一、创建Chart图表对象
使用的是LineChart对象,代码如下:

LineChart chart =(LineChart)sheet.Charts.Add(ChartType.Line,"B4","J22");

以上意思是从B4到J22创建一个LineChart对象。
设置图表标题不可见,代码如下:

chart.Title.IsVisible = false;

设置X轴与Y轴的标题可见,代码如下:

chart.Axes.Horizontal.Title.Text = "Time";
chart.Axes.Vertical.Title.Text = "Voltage";

十二、给Y轴设置属性
主要使用了chart.Axes.VerticalValue返回的ValueAxis对象,代码如下:

ValueAxis axisY =  chart.Axes.VerticalValue;
//Y轴最大刻度与最小刻度
axisY.Minimum = -100;
axisY.Maximum = 100;
//Y轴主要与次要单位大小
axisY.MajorUnit = 20;
axisY.MinorUnit = 10;
//Y轴主要与次要网格是否可见
axisY.MajorGridlines.IsVisible = true;
axisY.MinorGridlines.IsVisible = true;
//Y轴刻度线类型
axisY.MajorTickMarkType = TickMarkType.Cross; 
axisY.MinorTickMarkType = TickMarkType.Inside;

十三、附上完整的源代码

using GemBox.Spreadsheet;
using GemBox.Spreadsheet.Charts;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;

namespace SpreadSheetChartDemo
{
    class Program
    {
        const int PT = 20;
        const int LENGTH = 200;
        const string TIMESNEWROMAN = "Times New Roman";
        const string TITLE = "Spread Sheet Chart Demo";
        static void Main(string[] args)
        {
            SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
            ExcelFile excel = new ExcelFile();
            //Excel默认字体
            excel.DefaultFontName = TIMESNEWROMAN;
            //Excel文档属性设置
            excel.DocumentProperties.BuiltIn.Add(new KeyValuePair<BuiltInDocumentProperties, string>(BuiltInDocumentProperties.Title, TITLE));
            excel.DocumentProperties.BuiltIn.Add(new KeyValuePair<BuiltInDocumentProperties, string>(BuiltInDocumentProperties.Author, "CNXY"));
            excel.DocumentProperties.BuiltIn.Add(new KeyValuePair<BuiltInDocumentProperties, string>(BuiltInDocumentProperties.Company, "CNXY"));
            excel.DocumentProperties.BuiltIn.Add(new KeyValuePair<BuiltInDocumentProperties, string>(BuiltInDocumentProperties.Comments, "By CNXY.Website: http://www.cnc6.cn"));
            //新建一个Sheet表格
            ExcelWorksheet sheet = excel.Worksheets.Add(TITLE);
            //设置表格保护
            sheet.ProtectionSettings.SetPassword("cnxy");
            sheet.Protected = true;
            //设置网格线不可见
            sheet.ViewOptions.ShowGridLines = false;
            //定义一个B2-G3的单元格范围
            CellRange range = sheet.Cells.GetSubrange("B2", "J3");
            range.Value = "Chart";
            range.Merged = true;
            //定义一个单元格样式
            CellStyle style = new CellStyle();
            //设置边框
            style.Borders.SetBorders(MultipleBorders.Outside, Color.Black, LineStyle.Thin);
            //设置水平对齐模式
            style.HorizontalAlignment = HorizontalAlignmentStyle.Center;
            //设置垂直对齐模式
            style.VerticalAlignment = VerticalAlignmentStyle.Center;
            //设置字体
            style.Font.Size = 22 * PT;
            style.Font.Weight = ExcelFont.BoldWeight;
            style.Font.Color = Color.Blue;
            range.Style = style;
            //增加Chart
            LineChart chart = (LineChart)sheet.Charts.Add(ChartType.Line,"B4","J22");
            chart.Title.IsVisible = false;
            chart.Axes.Horizontal.Title.Text = "Time";
            chart.Axes.Vertical.Title.Text = "Voltage";
            ValueAxis axisY =  chart.Axes.VerticalValue;
            //Y轴最大刻度与最小刻度
            axisY.Minimum = -100;
            axisY.Maximum = 100;
            //Y轴主要与次要单位大小
            axisY.MajorUnit = 20;
            axisY.MinorUnit = 10;
            //Y轴主要与次要网格是否可见
            axisY.MajorGridlines.IsVisible = true;
            axisY.MinorGridlines.IsVisible = true;
            //Y轴刻度线类型
            axisY.MajorTickMarkType = TickMarkType.Cross; 
            axisY.MinorTickMarkType = TickMarkType.Inside;
            Random random = new Random();
            double[] data = new double[LENGTH];
            for (int i=0;i< LENGTH; i++)
            {
               if( random.Next(0,100) > 50)
                    data[i] = random.NextDouble() * 100;
               else
                    data[i] = -random.NextDouble() * 100;
            }
            chart.Series.Add("Random", data);

            //尾部信息
            range = sheet.Cells.GetSubrange("B23", "J24");
            range.Value = $"Write Time:{DateTime.Now:yyyy-MM-dd HH:mm:ss} By CNXY";
            range.Merged = true;
            //B25(三种单元格模式)
            sheet.Cells["B25"].Value = "http://www.cnc6.cn";
            sheet.Cells[24,1].Style.FillPattern.PatternStyle = FillPatternStyle.Solid;
            sheet.Rows[24].Cells[1].Style.FillPattern.PatternForegroundColor = Color.Gainsboro;
            //B25,J25
            sheet.Cells.GetSubrangeAbsolute(24, 1, 24, 9).Merged = true;
            string filePath = $@"{Environment.CurrentDirectory}\SheetChart.xlsx";
            try
            {
                excel.Save(filePath);
                Process.Start(filePath);
                Console.WriteLine("Write successfully");
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex);
            }
            Console.Write("Press any key to continue.");
            Console.ReadKey();
        }
    }
}

十四、生成的Excel
演示的Excel下载地址:

https://pan.baidu.com/s/1slDPAED



十五、生成的exe
下载地址如下:

https://pan.baidu.com/s/1nvefYvJ

运行结果如下:

  C# 最新文章
字符串阵列分别输出元素的索引,原值和长度
格式化你的字符串
C#宣告一个变量
C#中级
拆分一个字符串并把每个字符单独输出
通过手机号定位归属地
C#堆与栈
《C#微信开发系列(4)
线程基本概念
基于吉日嘎底层架构的Web端权限管理操作演示
上一篇文章      下一篇文章      查看所有文章
加:2017-12-06 23:23:10  更:2017-12-06 23:23:33 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2017年12日历
2017-12-17 18:09:32
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库