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很轻量,且使用起来很方便,在这里推荐下来来使用。

下载地址:

http://xiazai.jb51.net/201712/yuanma/GemBox_Spreadsheet.zip

本文就是使用该工具进行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下载地址:

http://xiazai.jb51.net/201712/yuanma/SheetChart.zip

十五、生成的exe

下载地址如下:

http://xiazai.jb51.net/201712/yuanma/SpreadSheetChartDemo.zip

运行结果如下:

以上这篇C#使用Gembox.SpreadSheet向Excel写入数据及图表的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C# 添加、修改以及删除Excel迷你图表的实现方法

    Excel表格中的迷你图表能够直观地向我们展示出数据的变化趋势.本文将介绍C#如何实现为表格数据生成迷你图表,以及修改和删除迷你图表的方法.下面将详细讲述. 所用组件工具:Spire.XLS for .NET 原Excel图表: 一.添加迷你图表(折线图.柱形图.盈亏图) 1.添加命名空间 using System; using Spire.Xls; using System.Drawing; 2.主要代码 //创建一个Workbook类对象并加载Excel文档 Workbook workboo

  • C#实现文件上传下载Excel文档示例代码

    要求 环境信息:WIN2008SERVER  开发工具:VS2015 开发语言:C# 要求: 1.点击同步数据后接口获取数据展示页面同时过滤无效数据并写入数据库,数据可导出Excel并支持分类导出 2.Excel导入确认数据,调用服务处理数据后写入数据库,并支持分类导出 这两天搞了一个小功能,其他的不说了针对Excel导入导出做一个小总结 导出文件 这里的文件导出是底层写好的,个人理解有限而且毕竟属于公司就不贴具体代码了,简单说一下思路 首先是建立导出Excel管理类,用于管理Excel文件导出

  • C# 创建EXCEL图表并保存为图片的实例

    数据表格能够清晰的呈现数据信息,但是我们对于一些繁杂多变的数据想要很直观的看到数据变化走势或者数据的占比时,数据图表会更具代表性,并且在呈现数据信息上也更形象,也能获取更多纯数字信息所不能直接展现的信息.在下面的代码中,将向您展示如何通过使用免费的Free Spire XLS for .NET组件来实现. 原数据表格: C# using Spire.Xls; using System.Drawing; using System.Drawing.Imaging; namespace CreateC

  • C# 文件上传下载(Excel导入,多线程下载)功能的实现代码

    废话不多说了,直接给大家贴代码,具体代码如下所示: //打开Excel文件,转换为DataTable DataTable dtExcel; private void OpenFile() { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "Microsoft Excel files(*.xls)|*.xls;*.xlsx"; //筛选打开文件类型 :图片 *.jpg|*.jpg|*.bmp|*.bmp ;&q

  • C#仪器数据文件解析Excel文件的方法浅析(xls、xlsx)

    前言 大家都知道,不少仪器工作站可xls文件和2007+的xl以将数据导出为Excel文件,包括97-2003版本的sx文件. 采集Excel文件相比采集pdf文件更容易.程序更健壮,毕竟Excel中数据有明确的行.列的定义,利于数据解析. Excel早期的xls文件和后来的xlsx文件的格式不一样,xls是二进制特定格式文件,xlsx是zip压缩包,其中数据使用xml定义.虽然两种文件格式定义不同,但解析文件数据可以通过中间件,因此只要理解了Excel文件的工作簿.sheet页.行.列.单元格

  • C#创建Excel多级分组的方法

    在Excel中如果能够将具有多级明细的数据进行分组显示,可以清晰地展示数据表格的整体结构,使整个文档具有一定层次感.根据需要设置显示或者隐藏分类数据下的详细信息,在便于数据查看.管理的同时也使文档更具美观性.那么,在C#中如何来创建Excel数据的多级分组显示呢?下面将进行详细阐述.方法中使用了免费版组件Free Spire.XLS for .NET,下载安装该组件,创建一个控制台应用程序后,添加引用该组件安装包下的dll文件到项目中,同时添加相应的命名空间即可.下面是具体的代码操作步骤,供参考

  • C# 操作Excel代码总结

    本文分享了c#操作Excel的相关代码,还是比较全面的,其实无外乎存取,增删改查等操作,参考下. 具体代码: //引用Microsoft.Office.Interop.Excel.dll文件 //添加using using Microsoft.Office.Interop.Excel; using Excel=Microsoft.Office.Interop.Excel; //设置程序运行语言 System.Globalization.CultureInfo CurrentCI = System

  • C# winform打印excel的方法

    前言 c#做winform程序要求生成并打印Excel报告,为了不安装Office相应组件,我选择了NPOI来生成Excel报告,用winform的PrintDocument控件来触发打印操作,而难点在于如何将excel转换成Graphics对象,在NPOI中我只找到了excel打印的设置(如横向/纵向),还需要打开excel去触发打印操作,但项目要求是一次性直接实现打印,要用PrintDocument控件而不是再去操作excel.不得已重新搜索,发现了类库Spire.xls,最终实现了要求.有

  • 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很轻量,且使用起来很方便,在这里推荐下来来使用. 下载地址: http://xiazai.jb51.net/201712/yuanma/GemBox_Spreadsheet.zi

  • Android向Excel写入数据导出U盘并发送邮件

    本文实例为大家分享了Android向Excel写入数据导出并发送邮件的具体代码,供大家参考,具体内容如下 创建Execl.写入Excel格式 public WriteExcel(Context mContext){ this.mContext = mContext; } // 创建excel表 public void createExcel(File file) { deleteExcel(file); WritableSheet ws = null; try { if (!file.exist

  • jxl操作excel写入数据不覆盖原有数据示例

    需要导入的包:jxl.jar 复制代码 代码如下: public void readTO() {        Workbook wb = null;        WritableWorkbook wwb = null;        try {            File is = new File(System.getProperty("user.dir") + "\\in.xls");            File os = new File(Syst

  • Python向excel中写入数据的方法

    最近做了一项工作需要把处理的数据写入到Excel表格中进行保存,所以在此就简单介绍使用Python如何把数据保存到excel表格中. 数据导入之前需要安装 xlwt依赖包,安装的方法就很简单,直接 pip install xlwt ,如果电脑中安装过就不需要重复安装. 接下来就做一个简单的demo ,把三行数据添加到excel中. 具体代码如下: #!/usr/bin/env python # coding=utf-8 from xlwt import * #需要xlwt库的支持 #import

  • Python实现自定义顺序、排列写入数据到Excel的方法

    本文实例讲述了Python实现自定义顺序.排列写入数据到Excel的方法.分享给大家供大家参考,具体如下: 例1. 数据框顺序写入Excel: data=a import xlsxwriter workbook = xlsxwriter.Workbook('F:/chart1.xlsx') worksheet = workbook.add_worksheet('请求接口') title = [u'订单号',u'债权编号',u'请求参数',u'创建时间',u'结果'] print data.ilo

  • Python3读取和写入excel表格数据的示例代码

    python操作excel主要用到 xlrd 和 xlwt 这两个库,xlrd读取excel表格数据, 支持 xlsx和xls格式的excel表格 :xlwt写入excel表格数据: 一.python读取excel表格数据 1.读取excel表格数据常用操作 import xlrd # 打开excel表格 data_excel=xlrd.open_workbook('data/dataset.xlsx') # 获取所有sheet名称 names=data_excel.sheet_names()

  • python3.7 openpyxl 在excel单元格中写入数据实例

    本来我是想尝试,选中某个多个单元格复制到同一个sheet的其他位置,找了很多资料没有找到,目前只有这么一个办法,如果有大佬看到,欢迎补充请教. # encoding:utf-8 import pandas as pd import openpyxl xl = pd.read_excel(r"E:\55\CRM经营分析表-10001741-1570416265044.xls") xl.to_excel(r"E:\55\crms.xlsx") wk = openpyxl

  • C# 从Excel读取数据向SQL server写入

    第一次写C#与sql的东西,主要任务是从Excel读取数据,再存到SQL server中. 先上读取Excel文件的code如下. public bool GetFiles(string equipName) { //choose all sheet? or all data in sheet? string strExcel = "select * from [Sheet1$]"; //初始化system.IO的配置(路径) DirectoryInfo directoryInfo1

  • 利用Python第三方库xlwt写入数据到Excel工作表实例代码

    目录 1. 安装 xlwt 库 2. 使用 xlwt 库 2.1 向 Excel 工作表写入单个数据 2.2 向 Excel 工作表写入多个数据 2.3 向 Excel 工作表写入多个数据(进阶) 3. 总结 1. 安装 xlwt 库 Python 写入数据到 Excel 工作簿中可以使用第三方库 xlwt. xlwt 拆分下来看就是 excel 和 write 的简化拼接,意思就是写数据到 Excel. 这个第三方库的 pip 安装命令如下所示: pip install xlwt -i htt

  • C#实现Excel表数据导入Sql Server数据库中的方法

    本文实例讲述了C#实现Excel表数据导入Sql Server数据库中的方法.分享给大家供大家参考,具体如下: Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nvarchar类型, tt nvarchar类型 (注意:my_test表中的数据类型必须与Excel中相应字段的类型一致) 2. 我们用SELECT * FROM  OPENROWSET(

随机推荐