Office组件之Spire.XSL的DotNet操作

http://www.cnblogs.com/gaohongchen01/p/5061211.html

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, 1, 1);

    //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(0, 0, 128);
    sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
    sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeBottom].Color = Color.FromArgb(0, 0, 128);
    sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;
    sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeLeft].Color = Color.FromArgb(0, 0, 128);
    sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
    sheet.Range["A1:K3"].Style.Borders[BordersLineType.EdgeRight].Color = Color.FromArgb(0, 0, 128);
    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 = 2;
    chart.TopRow = 5;
    chart.RightColumn = 10;
    chart.BottomRow = 30;
  
    chart.ChartTitle = "Tepmerature Chart";
    chart.ChartTitleArea.IsBold = true;
    chart.ChartTitleArea.Size = 12;
 
    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 = 90;
    chart.PrimaryValueAxis.MinValue = 1;
    chart.PrimaryValueAxis.TitleArea.IsBold = true;

    chart.PlotArea.Fill.Visible = false;
    chart.Legend.Position = LegendPositionType.Top;
}
复制代码

(7)Execute

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

复制代码
dataTable = DBReader();

worksheet = workbook.Worksheets[0];

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即可。

=======================================================================
中文名:高洪臣
英文名:Gordon
E-mail:gaohongchen01@163.com
微   博:http://weibo.com/gaohongchen01
=======================================================================
分类:  C#
Free Spire.XLS for .NET 是 Spire.XLS for .NET 的免费版本,无需购买即可用于个人或商业用途。使用 Free Spire.XLS for .NET,开发人员可以在 .NET 应用程序中快速对 Excel 文档进行各种编程操作,如根据模板创建新的 Excel 文档,编辑现有 Excel 文档以及对 Excel 文档进行转换等。Free Spire.XLS for .NET 是 Spire.XLS for .NET 的免费版本,无需购买即可用于个人或商业用途。使用 Free Spire.XLS for .NET,开发人员可以在 .NET 应用程序中快速对 Excel 文档进行各种编程操作,如根据模板创建新的 Excel 文档,编辑现有 Excel 文档以及对 Excel 文档进行转换等。 主要功能如下: 1.100% 独立的 .NET 组件,无需 Microsoft Office Automation 2.强大的,高质量的 Excel 文件转换功能。支持将 Excel 文档快速高效地转换为多种常见的格式,如 XML,Text,PDF 和图片等。 3.使用全面的工作簿设计器创建 Excel 报表。支持开发人员新建 Excel 工作簿,从文件流或文件夹加载工作簿。还可以将工作薄保存到磁盘, 文件流或 Web Response,同时提供了多种安全功能,包括 Excel 加密/解密,单元格隐藏/取消隐藏,工作表锁定/解锁。 4.自由操作工作表。允许开发人员使用 C#、VB.NET 或 ASP.NET 来创建、添加、删除、重命名、编辑和移动工作表,开发人员还可以在多个充满数据的工作表之间进行复制、调换和合并操作。这个专业的 .NET Excel 类库嵌入了很多灵活显示工作表的选项,包括分页符,缩放设置,冻结窗口,页眉/页脚,打印 Excel 文件,打印页面尺寸和打印区域等。 5.在运行时轻松操作单元格和 Excel 计算引擎。开发人员可以在运行时使用 C#、VB.NET 或 ASP.NET 轻松地操作 Excel 单元格,计算公式值。该高速、可扩展的 Excel 计算引擎与 Excel 97-2003/2007/2010 等兼容。同时该组件支持设置单元格样式,如单元格的合并/拆分,文字环绕/取消环绕,文本排列和旋转、边框、锁定/解除等。字体格式,如设置字体类型、大小、颜色、粗体、斜体、删除线、下划线等等。条件格式,文本搜索和替换,过滤和数据验证等操作都可以轻松的应用到单元格中。 6.图表、数据和其它元素。提供了一组丰富的图表,如饼状图,条形图,柱形图,折线图和雷达图等。此外,它支持使用 C#、VB.NET 或 ASP.NET 在数据库和 Excel 之间进行数据传输,支持超链接和模板,支持创建和获取数据透视表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值