又一款Excel处理神器Spire.XLS,你值得拥有(二)

 

前言:上篇 C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有 介绍了下组件的两个功能,说不上特色,但确实能解决我们项目中的一些实际问题,这两天继续研究了下这个组件,觉得有些功能用起来还是挺方便的,这篇继续来看看Spire.XLS的一些其他功能,说不定有你需要的呢~~

本文原创地址:http://www.cnblogs.com/landeanfen/p/5906077.html

一、基础入门

1、新建Workbook

Spire.XLS提供了多种方式创建Workbook对象

1.1、新建空的Workbook

//新建Workbook
Workbook workbook = new Workbook();
//得到第一个Sheet页
Worksheet sheet = workbook.Worksheets[0]; //给A2这个单元格设置值
sheet.Range["A2"].Text = "你好,Jim" ; //保存到物理路径
var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
workbook.SaveToFile(strFullName);

就这么简单生成一个Excel文件

1.2、根据物理路径生成Workbook

//新建Workbook
Workbook workbook = new Workbook();
//将当前路径下的文件内容读取到workbook对象里面
workbook.LoadFromFile(@"D:\Data\Upload\Export20160926114559.xlsx"); //得到第一个Sheet页
Worksheet sheet = workbook.Worksheets[0];
//给A2这个单元格设置值
sheet.Range["C5"].Text = "你好,Jim" ; //保存到物理路径
var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
workbook.SaveToFile(strFullName,ExcelVersion.Version2010);

1.3、根据文件流生成Workbook

上篇我们演示过多次,对于Web里面的文件上传,多用此方法。

//得到当前请求的文件
var oFile = Request.Files["txt_file"]; //根据当前的文件流生成Workbook对象
Workbook book = new Workbook();
book.LoadFromStream(oFile.InputStream);

1.4、根据Excel模板生成Workbook

这种用法适用于项目需要使用Excel模板的时候,比如我们项目需要导出的每一个Excel都适用如下模板:

那么,我们每次生成Excel的时候可以根据该模板去创建Workbook

//新建Workbook
Workbook workbook = new Workbook();
//根据模板生成Workbook
workbook.LoadTemplateFromFile(@"D:\Data\Upload\Template.xlsx");

这样得到的Excel文件将会自动套用该模板样式。

2、读写Workbook

2.1、根据单元格的名称框来读写Excel

关于Workbook的读写,上文已经提供了一种方式,形如:

sheet.Range["C5"].Text = "你好,Jim" ;

这样就能给C5单元格赋值,如果是取值,可以直接使用同样的方式。当然,除了Text字符串的内容,组件还提供了NumberValue、DateTimeValue、BooleanValue等属性,用于读写数字、时间、bool类型的值。

当然,Range除了支持基础的单元格名称框来读写值之外,它还提供了给某一个区域的文本框赋值的功能。比如

sheet.Range["C5:E6"].Value = "你好,Jim" ;

这一句表示给C5-E6这一区域的文本框统一赋值。得到结果如下:

如果需要操作当前区域的所有单元格,可以这样:

var columes = sheet.Range["C5:E6"].Columns ;
foreach (var column in columes)
{ }

2.2、根据单元格的行列索引来读写Excel

除了上面的方式,组件还支持通过行列的索引去给单元格取赋值。

sheet.Range[1, 1].Text = "部门名称";

以上一句表示给第一个行第一列单元格赋值。

3、保存Workbook

关于Excel的保存,组件同样提供了多种方式。

3.1、直接保存的方式:SaveToFile()

var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
workbook.SaveToFile(strFullName);

值得一提的是,SaveToFile还支持保存不同版本的Excel,来看这个重载

public void SaveToFile(string fileName, ExcelVersion version);

ExcelVersion是一个枚举类型,定义了各种不同版本的Excel:

public enum ExcelVersion
{
// 摘要:
// Represents excel version 2007 xlsb
Xlsb2007 = 0,
//
// 摘要:
// Represents excel version 2010 xlsb
Xlsb2010 = 1,
//
// 摘要:
// OpenOffice Spreadsheet documents
ODS = 2,
//
// 摘要:
// Represents excel version 97-2003.
Version97to2003 = 3,
//
// 摘要:
// Represents excel version 2007
Version2007 = 4,
Version2010 = 5,
//
// 摘要:
// Represents excel version 2013.
Version2013 = 6,
}

3.2、保存并且转换文件

上篇介绍Excel转PDF的时候,我们知道组件提供了SaveToPdf()方法直接将Excel保存成为pdf文件,用法如下:

//保存到物理路径
var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
workbook.SaveToPdf(strFullName)

除了保存成为pdf之外,还支持转换成其他格式:

保存为image

var strFullName = @"D:\Data\Upload\" + "Export" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png";
var image = workbook.SaveAsImage(0, 100, 190);
image.Save(strFullName);

SaveAsImage()第一个参数表示需要生成图片的Sheet页的索引;第二、三个参数表示生成图片的X和Y的值。

保存为xml

workbook.SaveAsXml(strFullName);

保存到文件流

using (var stream = new FileStream(strFullName, FileMode.Create))
{
workbook.SaveToStream(stream);

二、样式

1、文本样式

设置单元格字体样式

sheet.Range["C5:E6"].Value = "aaabbbccc";
sheet.Range["C5:E6"].Style.Font.Color = Color.FromArgb(255, 125, 125);//文本颜色
sheet.Range["C5:E6"].Style.Font.IsBold = true;//字体是否加粗
sheet.Range["C5:E6"].Style.Font.IsItalic = true;//是否斜体
sheet.Range["C5:E6"].Style.Font.Underline = FontUnderlineType.Single;//下划线
sheet.Range["C5:E6"].Style.Font.IsSuperscript = true;//是否呈现为下标
sheet.Range["C5:E6"].Style.Font.FontName = "华文彩云";//字体名称
sheet.Range["C5:E6"].Style.Font.Size = 30;//字体大小

得到结果

2、单元格样式

关于单元格样式设置

sheet.Range["C5:E6"].Style.HorizontalAlignment = HorizontalAlignType.Center;//水平对齐
sheet.Range["C5:E6"].Style.VerticalAlignment = VerticalAlignType.Center;//垂直对齐
sheet.Range["C5:E6"].ColumnWidth = 100;//单元格的宽度
sheet.Range["C5:E6"].RowHeight = 30;//行高
sheet.Range["C5:E6"].Style.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;//边框
sheet.Range["C5:E6"].Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Thin;
sheet.Range["C5:E6"].Style.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin;
sheet.Range["C5:E6"].Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;

3、表格样式

下面来一个奇偶行的样式:

 SheetStyle()

效果如下:

4、富文本编辑框

除了上面的一些简单样式外,组件还提供了富文本的编辑方式

ExcelFont fontBold = book.CreateFont();
fontBold.IsBold = true; ExcelFont fontUnderline = book.CreateFont();
fontUnderline.Underline = FontUnderlineType.Single; ExcelFont fontColor = book.CreateFont();
fontColor.KnownColor = ExcelColors.Green; RichText richText = sheet.Range["A1"].RichText;
richText.Text = "Bold and underlined and colored text";
richText.SetFont(0, 3, fontBold);
richText.SetFont(9, 18, fontUnderline);
richText.SetFont(24, 30, fontColor);

效果

当然,这个功能可能在一些特定的场合才会用上。

三、冻结行列

组件提供了非常方便冻结行列的功能。

1、冻结行

sheet.FreezePanes(2, 1);

得到结果

2、冻结列

sheet.FreezePanes(1, 2);

得到结果

代码释疑:这里的两个参数怎么理解,第一个参数rowIndex,第二个参数columnIndex。为什么sheet.FreezePanes(2, 1)能冻结首行?这里博主的理解是这里的参数设置的是开始滑动的行和列。也就是说FreezePanes(2,1)表示从第二行、第一列开始可以滑动,而FreezePanes(1,2)表示从第一行、第二列开始可以滑动。这样是不是会好理解一点。

四、合并单元格

关于单元格的合并,组件使用也还算方便。

var mergecolumn = sheet.Merge(sheet.Range[1, 2], sheet.Range[1, 3]);
mergecolumn.VerticalAlignment = VerticalAlignType.Center;
mergecolumn.HorizontalAlignment = HorizontalAlignType.Center;
mergecolumn.Text = "第一个合并的单元格" ;

得到结果

五、选项过滤功能

组件提供了方便的组件过滤功能

sheet.AutoFilters.Range = sheet.Range["A1:C1"];

以上表示对A1到C1这个区域的所有文本框进行过滤。效果如下:

六、下拉框

在Excel里面,经常需要用到的一个功能就是在编辑单元格的时候使用下拉框,这样方便了一些特定项的编辑。同样,组件也为我们提供了这个功能

//下拉框
CellRange range = sheet.Range["A2:A6"];
//给E1到E10所有的单元格添加下拉选项,数据来源是A2到A6的值
sheet.Range["E1:E10"].DataValidation.DataRange = range;

效果如下:

七、显示、隐藏行列

对于行列隐藏也算是一个常用功能,方法如下

//显示、隐藏行列
sheet.HideColumn(10);
sheet.HideRow(8);
//sheet.ShowColumn(10);
//sheet.ShowRow(7);

效果

八、搜索结果高亮

foreach (CellRange range in sheet.FindAllString("行政部", true, true))
{
range.Style.Color = Color.LawnGreen;
}

效果如下

九、总结

至此,组件的一些基础功能介绍完毕。当然,这并不是全部,只是博主选的一些觉得或许有用的功能,更多功能可以参考官网文档。

当然,如果本文能够帮到你,还是希望园友们帮忙推荐,博主下次继续努力!

本文原创出处:http://www.cnblogs.com/landeanfen/

欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利

 
分类: C#,.Net

Spire.XLS的更多相关文章

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

    前言:上篇 C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有 介绍了下组件的两个功能,说不上特色,但确实能解决我们项目中的一些实际问题,这两天继续研究了下这个组件,觉得有些功能用 ...

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

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

  3. 使用Free Spire.XLS插入图表

    使用Free Spire.XLS插入图表 前言 最近在研究Office中间件,上网搜索了下,比较出名的有两个:Aspose和Spire,两者功能齐全,对Office的支持趋近完善,但售价不菲.仔细搜索 ...

  4. 利用免费的Spire.XLS控件制作Excel报表

    我们小组上个季度接手了一个项目其中需要实现创建excel文档的功能,寻找实现这个功能的控件的任务分配给了我,通过百度搜索我找到了一个免费的控件,它是由E-iceblue公司推出的spire.xls控件 ...

  5. 使用SPIRE.XLS来创建Excel 工作簿

               使用SPIRE.XLS来创建Excel 工作簿     概要 最近在研究 .NET 控件,使用这些控件在程序中可以快速低成本实现功能. 在这一篇中我们使用的控件是Spire.XL ...

  6. Office组件之Spire.XLS的DotNet操作

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

  7. 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍

    在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E ...

  8. 【原创】.NET读写Excel工具Spire.Xls使用(2)Excel文件的控制

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

  9. 【原创】.NET读写Excel工具Spire.Xls使用(3)单元格控制

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

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

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

随机推荐

  1. WebService基于SoapHeader实现安全认证(一)

    本文转载:http://www.cnblogs.com/houleixx/archive/2009/08/22/webservice-soapheader-security.html WebServi ...

  2. android.util.Log说明和android 像素说明

    1. android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() .根据首字母对应VERBOSE,DEBUG,INFO, ...

  3. Zookeeper3.4.6部署伪分布集群(Apache)

    1.下载Zookeeper http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/ 2.创建/usr/app/zookeeper目录,并切换 ...

  4. hdu2045java递推

    不容易系列之(3)—— LELE的RPG难题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  5. vi 使用笔记

    基本A 当前行追加J 去除本行和下一行之间的换行符(写CSS利器)~ 光标所在处的字符进行大小写互换* 向前搜索目前光标所在的单词# 向后搜索目前光标所在的单词% 查找与光标所在处相匹配的反括号, 包 ...

  6. [学习笔记]设计模式之Prototype

    写在前面 为方便读者,本文已添加至索引: 设计模式 学习笔记索引 在笔记Builder模式中,我们曾见到了最初用于创建平行世界的函数createWorld,并且它是Mage类的成员函数(毕竟是专属于魔 ...

  7. Java基础知识强化之IO流笔记25:FileInputStream / FileOutputStream 复制图片案例

    1.  需求:把D:\\美女.jpg 复制到当前项目目录下mn.jpg 代码示例: package com.himi.filecopy; import java.io.FileInputStream; ...

  8. IT技能栈

    C++.JAVA.Objective-C 基本数据类型,集合类如字符串数组字典,自定义数据对象 内存布局,编译运行期的变化 语言特性 输入输出流,文件流,序列化 多线程,并发控制,线程池,锁 网络编程 ...

  9. Linux netstat命令参数解释

    netstat –ntlp 显示 tcp 的监听端口 netstat –ntlp 显示 tcp udp 的监听端口 netstat –r 显示路由表 netstat –rn 显示路由表不做名称解析(较 ...

  10. 项目打包 weblogic部署

    工作流打包:   由于没有集成单点,配置文件要修改 将webnocas.xml内容复制覆盖 web.xml   到这里修改完毕 选择weblogic项目,右键maven install,生成.ear文 ...