C#组件系列——又一款Excel处理神器Spire.XLS(二)
阅读目录
- 一、基础入门
- 1、新建Workbook
- 2、读写Workbook
- 3、保存Workbook
- 二、样式
- 1、文本样式
- 2、单元格样式
- 3、表格样式
- 4、富文本编辑框
- 三、冻结行列
- 1、冻结行
- 2、冻结列
- 四、合并单元格
- 五、选项过滤功能
- 六、下拉框
- 七、显示、隐藏行列
- 八、搜索结果高亮
- 九、总结
正文
前言:上篇 C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有(一) 介绍了下组件的两个功能,说不上特色,但确实能解决我们项目中的一些实际问题,这两天继续研究了下这个组件,觉得有些功能用起来还是挺方便的,这篇继续来看看Spire.XLS的一些其他功能,说不定有你需要的呢~~
本文原创地址:C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有(二) - 懒得安分 - 博客园
回到顶部
一、基础入门
回到顶部
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 xlsbXlsb2007 = 0,//// 摘要: // Represents excel version 2010 xlsbXlsb2010 = 1,//// 摘要: // OpenOffice Spreadsheet documentsODS = 2,//// 摘要: // Represents excel version 97-2003.Version97to2003 = 3,//// 摘要: // Represents excel version 2007Version2007 = 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; }
效果如下
回到顶部
九、总结
至此,组件的一些基础功能介绍完毕。当然,这并不是全部,只是博主选的一些觉得或许有用的功能,更多功能可以参考官网文档帮助文档 | 全面丰富的在线文档,助您快速了解如何使用产品
当然,如果本文能够帮到你,还是希望园友们帮忙推荐,博主下次继续努力!
本文原创出处:懒得安分 - 博客园
C#组件系列——又一款Excel处理神器Spire.XLS(二)相关推荐
- C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有
阅读目录 一.组件介绍 二.组件安装使用 1.官方下载安装 2.Nuget安装 三.组件功能介绍 1.Excel转PDF 2.Excel生成图表 3.其他功能介绍 四.总结 正文 前言:最近项目里面有 ...
- C#组件系列——又一款Excel处理神器Spire.XLS(一)
阅读目录 一.组件介绍 二.组件安装使用 1.官方下载安装 2.Nuget安装 三.组件功能介绍 1.Excel转PDF 2.Excel生成图表 3.其他功能介绍 四.总结 正文 前言:最近项目里面有 ...
- Excel控件 Spire.XLS系列教程(2):C# 设置现有 Excel 图表的数据标签样式
Spire.XLS是一款专业的Excel控件,无需安装微软Excel,也能拥有Excel的全套功能,能够为工厂智能化提供完善的Excel需求. Excel中图表的数据标签不仅可以增强图表的可读性,还可 ...
- Spire.XLS:一款Excel处理神器
正文 前言:最近项目里面有一些对Excel操作的需求,博主想都没想,NPOI呗,简单.开源.免费,大家都喜欢!确实,对于一些简单的Excel导入.导出.合并单元格等,它都没啥太大的问题,但是这次的需求 ...
- Spire.XLS:一款Excel处理神器(2)
一.基础入门 1.新建Workbook Spire.XLS提供了多种方式创建Workbook对象 1.1.新建空的Workbook //新建Workbook Workbook workbook = n ...
- Excel 控件Spire.XLS 7.12.130发布 | 附下载
2019独角兽企业重金招聘Python工程师标准>>> Spire.XLS 7.12.130 更新 修复 修复形状的阴影属性不起作用的问题. 修复了将Excel转换为PDF时矩形边 ...
- 【教程】Excel控件Spire.XLS 教程:在C#,VB.NET中添加Excel边框
在Excel中,可以将边框添加到单个单元格以强调数据,标记汇总值或单元格区域中的数据.边界也可以用不同的线条样式和颜色进行格式化.本文介绍了如何使用Spire.XLS将边框样式应用于Excel单元格. ...
- Excel控件Spire.XLS 教程:C#中激活工作表
Spire.XLS 是一个专业的Excel控件,有 .NET.WPF和Silverlight 版本,通过Spire.XLS无需安装微软Excel,也能拥有Excel的全套功能,本文介绍了如何通过Spi ...
- C#组件系列——又一款日志组件:Elmah的学习和分享
前言:好久没动笔了,都有点生疏,12月都要接近尾声,可是这月连一篇的产出都没有,不能坏了"规矩",今天还是来写一篇.最近个把月确实很忙,不过每天早上还是会抽空来园子里逛逛.一如既往 ...
最新文章
- 本地导入Android-PullToRefresh库问题解决
- solr5.5在centos7上的安装
- java string 反序列化_如何将java.lang.String的空白JSON字符串值反序列化为null?
- 拼接字符串的两种方式
- LiveVideoStack上海2019八折截止最后一周
- 苏宁张近东和富士康郭台铭为什么要抛售阿里巴巴股票?
- 阿加莎·克莉丝蒂与我们
- oracle负数怎么比较大小,输出负数【oracle学习吧】_百度贴吧
- 运用Nginx代理和UWSGI将Flask项目部署在Linux中 详细步骤
- Java面试知识点:多线程
- 【英语学习】【Daily English】U01 Greetings / L04 Hello, this is Peter Jones speaking
- VBS去除指定的字符串中的重复项返回重复后的字符串
- 如何使用bash / sed脚本删除文本文件的第一行?
- Python学习总结(4)——运算符
- 什么是传递(Pass-Through)会话
- 质量管理3个过程及相关重点
- 如何找到与证明素数之一:小素数和概率素数的快速检验
- Java介绍:java是什么?
- 冯诺依曼计算机配置,冯·诺依曼计算机的基本原理是()。
- Android网络请求框架Volley的使用
热门文章
- 统计之 - 独立性检验
- Python 字符串
- 计算机网络——路由算法
- 目前企业如何看待培训机构出来的程序员?
- DataGrip连接MySQL报错: Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezon
- 索罗斯的反身理论和汇率分析
- matlab计算后验概率,基于深度神经网络后验概率算法的口语发音评测方法与流程...
- Sketch中英文切换教程
- 树形表格TreeGrid
- CTime和CTimeSpan