Overview

  在项目中,我们经常需要将程序中获得的大量数据导出到Excel表格中,打印报表;进一步,还可能生成其折线图,对数据的变化趋势进行分析,从而更好地开展项目工作。

  最近,我发现了一个对于DotNet开发人员来说比较容易上手的Office开发组件——E-iceblue公司的Spire.XLS for .Net,我用该组件写了几个Demo,感觉还不错。在Demo中,我主要利用Spire.XLS组件将SQL Server 2008数据库中的数据导出到Excel中并将数据图表化。

  下面是E-iceblue官网对Spire.XLS for .Net组件的介绍:

  Spire.XLS for .NET is a professional Excel .NET component that can be used to any type of .NET 2.0, 3.5, 4.0 or 4.5 framework application, both ASP.NET web sites and Windows Forms application. Spire.XLS for .NET offers object model Excel API for speeding up Excel programming in .NET platform - create new Excel documents from template, edit existing Excel documents and convert Excel files.

  E-iceblue官网:http://www.e-iceblue.com/(冰蓝科技)。

Download & Installation

  首先,去官网下载Spire.XLS for .Net组件;

  双击exe程序进行安装;

Programming Guid

(1)Create a Project & Add Reference

  1)创建一个工程,我创建了一个WinForm工程;

  2)找到Spire.XLS for .Net组件的安装目录,在工程的“解决方案”窗口右击,添加引用,选择工程对应DotNet版本的组件进行添加;

(2)Using Namespace

  在本工程中,我使用的命名空间如下:

using Spire.Xls;
using Spire.Xls.Converter;
using Spire.Xls.Charts; using System.Data.SqlClient;

(3)Initialization

private DataTable dataTable = new DataTable();

private Workbook workbook = new Workbook();
private Worksheet worksheet;

(4)Database Manipulation

  在本工程中,我使用的是SQL Server 2008数据库。因为我现在没有大量的数据,为了此Demo,我先做了一些数据,不是很多,能达到效果即可。数据库中的数据如下:

  

  有了数据,我们就来连接数据库,Core Code如下:

private DataTable DBReader()
{
DataTable dataTable = new DataTable(); string strConn = "server=Gordon-PC\\SQLEXPRESS;database=DB_GHC;uid=sa;pwd=123456";
SqlConnection connSql = new SqlConnection(strConn);
connSql.Open();
if (connSql.State == ConnectionState.Open)
{
string sqlQuery = "SELECT * FROM Tb_Temperature";
SqlCommand cmdSql = new SqlCommand(sqlQuery, connSql);
SqlDataAdapter adapterSql = new SqlDataAdapter(cmdSql);
DataSet dataSet = new DataSet();
adapterSql.Fill(dataSet, "Table");
dataTable = dataSet.Tables["Table"];
}
connSql.Dispose(); //dataGridView1.DataSource = dataTable;
return dataTable;
}

  从以上代码可以看出,该方法的返回值是Datatable类型的,这是因为Spire.XLS for .Net组件需要的是Datatable类型的数据。

(5)Export Datatable to Excel

  核心代码如下所示:

private void Datatable2Excel(DataTable dataTable, Worksheet sheet)
{
sheet.InsertDataTable(dataTable, true, , ); //Style
sheet.Name = "TemperatureSheet";
sheet.GridLinesVisible = true;
sheet.Range["A1:K1"].Style.Font.IsBold = true;
sheet.Range["A2:K2"].Style.KnownColor = ExcelColors.LightYellow;
sheet.Range["A3:K3"].Style.KnownColor = ExcelColors.LightGreen1;
//Border
sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeTop].Color = Color.FromArgb(, , );
sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeBottom].Color = Color.FromArgb(, , );
sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeLeft].Color = Color.FromArgb(, , );
sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeRight].Color = Color.FromArgb(, , );
sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
}

(6)Create Line Chart

  核心代码如下:

private void InsertChart(Worksheet sheet)
{
//Add a new chart worsheet to workbook
Chart chart = sheet.Charts.Add(); //Set region of chart data
chart.DataRange = sheet.Range["A1:K3"];
chart.ChartType = ExcelChartType.Line; //Set position of chart
chart.LeftColumn = ;
chart.TopRow = ;
chart.RightColumn = ;
chart.BottomRow = ; chart.ChartTitle = "Tepmerature Chart";
chart.ChartTitleArea.IsBold = true;
chart.ChartTitleArea.Size = ; chart.PrimaryCategoryAxis.Title = "Day";
chart.PrimaryCategoryAxis.Font.IsBold = true;
chart.PrimaryCategoryAxis.TitleArea.IsBold = true; chart.PrimaryValueAxis.Title = "Temperature";
chart.PrimaryValueAxis.HasMajorGridLines = true;
chart.PrimaryValueAxis.TitleArea.TextRotationAngle = ;
chart.PrimaryValueAxis.MinValue = ;
chart.PrimaryValueAxis.TitleArea.IsBold = true; chart.PlotArea.Fill.Visible = false;
chart.Legend.Position = LegendPositionType.Top;
}

(7)Execute

  在Form1_Load方法中加入如下代码,让以上代码在窗体加载中得以执行。

dataTable = DBReader();

worksheet = workbook.Worksheets[];

Datatable2Excel(dataTable, worksheet);

InsertChart(worksheet);

workbook.SaveToFile("DataFromDB.xls");

System.Diagnostics.Process.Start("DataFromDB.xls");

  其中,最后一条代码是让程序打开刚才操作的Excel文件。

(8)Result

  程序执行后打开的Excel文件效果如下所示:

  

(9)Further

  在本工程中,因为不需要窗体,就将其最小化到了任务栏,核心代码如下:

/// <summary>
/// 窗体最小化到任务栏
/// </summary>
private void FormMinimizedInTaskbar()
{
this.WindowState = FormWindowState.Minimized;
this.ShowInTaskbar = false;//使Form不在任务栏上显示 this.iconNotify = new NotifyIcon();
this.iconNotify.Icon = new Icon("./Excel_2010_72px.ico");
this.iconNotify.Text = "WinFormXSL";
this.iconNotify.Visible = true;//在通知区显示Form的Icon
this.iconNotify.MouseClick+=new MouseEventHandler(iconNotify_MouseClick);
}

  单击任务栏的图标可将窗体显示出来,代码如下:

protected void iconNotify_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)//左键单击
{
//this.Visible = true;
WindowState = FormWindowState.Normal;
}
else if (e.Button == MouseButtons.Right)//右键单击
{
}
}

Summary

  以上我介绍的只是Spire.XLS for .Net组件的feature之一,除此之外还有很多,如下所示:

  

Source Code

  本工程的源代码,我已将其推送到我的Github,如有需要,请访问我的GitHub网站https://github.com/GaoHongchen/WinFormSpireXLS,Fork或Download即可。

Office组件之Spire.XLS的DotNet操作的更多相关文章

  1. C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有

    前言:最近项目里面有一些对Excel操作的需求,博主想都没想,NPOI呗,简单.开源.免费,大家都喜欢!确实,对于一些简单的Excel导入.导出.合并单元格等,它都没啥太大的问题,但是这次的需求有两点 ...

  2. Spire.XLS,生成Excel文件、加载Excel文件

    一.组件介绍 Spire.XLS是E-iceblue开发的一套基于企业级的专业Office文档处理的组件之一,全称Spire.Office for .NET.旗下有Spire.Doc,Spire XL ...

  3. 【目录】C#操作Excel组件Spire.XLS系列文章目录

    本博客所有文章分类的总目录链接:http://www.cnblogs.com/asxinyu/p/4288836.html 1.C#操作Excel组件Spire.XLS文章目录 1.[原创].NET读 ...

  4. 高效而稳定的企业级.NET Office 组件Spire(.NET组件介绍之二)

    在项目开发中,尤其是企业的业务系统中,对文档的操作是非常多的,有时几乎给人一种错觉的是”这个系统似乎就是专门操作文档的“.毕竟现在的很多办公中大都是在PC端操作文档等软件,在这些庞大而繁重的业务中,单 ...

  5. [.NET] 开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc

    开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc [博主]反骨仔 [原文地址]http://www.cnblogs.com/li ...

  6. Spire.Office组件使用例子

    用.NET开发程序通常要涉及到对Office文件读写操作,比较常见的操作比如提取文本,导出Excel格式数据,动态生成word文档,生成pdf文档等. 实现这些功能通常需要在服务端安装office软件 ...

  7. 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

  8. NET Office 组件Spire

    高效而稳定的企业级.NET Office 组件Spire   在项目开发中,尤其是企业的业务系统中,对文档的操作是非常多的,有时几乎给人一种错觉的是"这个系统似乎就是专门操作文档的" ...

  9. 开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍 - Spire.Doc (转)

      [原文地址]http://www.cnblogs.com/liqingwen/p/5898368.html 序 本打算过几天简单介绍下组件 Spire.XLS,突然发现园友率先发布了一篇,既然 x ...

随机推荐

  1. 【MySQL】pt-query-digest数据处理并关联业务

    参考:www.percona.com/doc/percona-toolkit/2.1/pt-query-digest.htm 通过pt-query-digest将慢日志导入数据库后在表global_q ...

  2. U盘FAT32文件系统转换成NTFS文件系统

    首先 点击-开始--运行---输入CMD ----输入convert X:/FS:NTFS 其中 X是U盘所在的盘符

  3. C语言Notebook

    int *pointer=NULL    /*指针变量一定要赋初值*/pritnf("Pointer' address is:%p",&pointer);  /*打印指针变 ...

  4. IP验证正则表达式

    Regex r = new Regex(@"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$" ...

  5. 自己实现多线程的socket,socketserver源码剖析

    1,IO多路复用 三种多路复用的机制:select.poll.epoll 用的多的两个:select和epoll 简单的说就是:1,select和poll所有平台都支持,epoll只有linux支持2 ...

  6. Neural Network学习(二)Universal approximator :前向神经网络

    1. 概述 前面我们已经介绍了最早的神经网络:感知机.感知机一个非常致命的缺点是由于它的线性结构,其只能做线性预测(甚至无法解决回归问题),这也是其在当时广为诟病的一个点. 虽然感知机无法解决非线性问 ...

  7. mongo group by

    mongo的写法与mysql等sql有着天壤之别,如最近在统计爬虫抓取的数据,其中一个就是按字段从大到小取前十个: sql写法:select count(id) from invest group b ...

  8. XidianOJ 1149 卡尔的技能 II

    --正文 多重集合数 + 组合数取模 首先求出没有限制的选择方法C(n+m-1,m) 然后减掉至少有一个元素选择了k+1次的方法数,加上至少有两个元素选择了k+1次的方法数...以此类推 然后是组合数 ...

  9. 6.openssl rsautl和openssl pkeyutl

    rsautl是rsa的工具,相当于rsa.dgst的部分功能集合.可用于签名.验证.加密和解密文件.非对称密钥的密钥是随机生成的,因此不需要也无法指定salt参与加密. pkeyutl是非对称加密的通 ...

  10. nodejs+mysql

    接着上一篇的php+mysql,我们来试一试nodejs怎么实现数据的增删查改. Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件 ...