欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET读写Excel工具Spire.Xls使用 Excel单元格控制(3)

程序员文章站 2022-06-24 13:13:29
前一篇文章:“ .net读写excel工具spire.xls使用(2)excel文件的控制”给大家介绍了c#使用spire.xls来控制excel文件的基本功能和相关实践代...

前一篇文章:“ .net读写excel工具spire.xls使用(2)excel文件的控制”给大家介绍了c#使用spire.xls来控制excel文件的基本功能和相关实践代码。这篇文章将重点介绍c#操作excel文件时,对excel单元格的控制。

  以前在使用npoi的时候,其实印象最深的还是单元格的操作,因为以前使用npoi的主要任务是生成一个复杂的统计报表,不仅表头比较复杂,而且行类别的控制也比较复杂,不是固定的,要动态的进行。并且不同单元格的边框还不一样,所以当初使用 npoi 也走了不少弯路。对单元格的控制是写入excel文件的最核心的东西。所以本篇文章就介绍我在使用spire.xls过程中相关单元格的控制总结。

1.excel单元格概述

  excel单元格是表格的最小编辑单元,也是操作的主体,日常涉及到的相关功能有:

1.对指定单元格读写内容:读写内容的时候,有一些操作可以和格式控制,如单元格的类型进行合并;

2.对单元格的格式进行控制,如数字,字符串,文字颜色,字体大小等等;对于自定义报表等文件,这个要求是比较常见的;

3.对单元格的样式进行控制,如边框线条(样式,颜色),内容对齐,合并单元格等等,也是很常见的;

4.单元格的相关统计,如一些函数,求和统计功能等等;

5.单元格的保护功能可以参考上一篇文章.net读写excel工具spire.xls使用(2)excel文件的控制

  接下来的内容主要对上述4个主要用途进行演示,附一些实际代码。如果有需要补充的,请留言。

2.单元格内容的读写

  在spire.xls中读写单元格,主要的一个对象不可不知,那就是cellrange,代表是单元格的一个范围集合,可以根据单元格的名称如a1,b2来返回单元格集合,也可以根据行号和列号(下标从1开始)来访问。例如下面的代码,直接对a1单元格赋值,然后对第一行第2个单元格赋值。相比npoi,不停的create再赋值,这确实方便不少。看代码:

static void exceltest5()
{
 //创建1个工作簿,相当于1个excel文件
 workbook workbook = new workbook();

 //获取第一个sheet,进行操作,下标是从0开始
 worksheet sheet = workbook.worksheets[0];

 //向a1单元格写入文字
 sheet.range["a1"].text = "我是a1单元格";
 sheet.range[1, 2].text = "我是第1行的第2个单元格";

 //将excel文件保存到指定文件,还可以指定excel版本
 workbook.savetofile("例子.xls", excelversion.version97to2003);
}

看效果:

.NET读写Excel工具Spire.Xls使用 Excel单元格控制(3)

而如果要访问对应单元格的值,也是可以直接通过上述cellrange获取单元格对象后,直接访问其属性value,或者text,numbervalue来获取你想要类型的值,不需要自己转换。但是前提你要知道单元格的格式。如下面代码:

 console.writeline(sheet.range["a1"].value);
 console.writeline(sheet.range["b1"].text);

3.单元格的内容格式与样式

3.1 单元格的数据类型

  在使用npoi的过程中,不仅单元格要频繁create,对写入的数据格式也要设置,而在spire.xls中,这些变得更简单了。直接根据数据类型给指定属性就ok了,非常简洁明了。例如,下面的代码,直接向单元格写入双精度,日期和布尔类型的数据,给numbervalue,datetimevalue,booleanvalue属性直接赋值就好了。

//向a1单元格写入文字
sheet.range["a1"].text = "我是a1单元格";
sheet.range[1, 2].text = "我是第1行的第2个单元格";

sheet.range["a3"].numbervalue = 100.23;
sheet.range["a4"].datetimevalue = datetime.now;   
sheet.range["a5"].booleanvalue = true;

   是不是非常简单,一行代码搞定的东西,以前可能要几行,多了之后也有些头疼。

3.2 单元格的字体格式

  以前的npoi样式的控制,要单独新建样式对象进行设置,而在spire.xls中,更加直接,直接对range的属性进行设置就好了,非常简单明了,看看我们对范围内的单元格是如何控制字体格式的,只列举了几个属性,其他属性以此类推:

1 //对一定范围内的单元格进行字体控制
2 sheet.range["a1:b10"].style.font.fontname = "微软雅黑";//字体名称
3 sheet.range["a1:b10"].style.font.size = 20;//字体大小
4 sheet.range["a1:b10"].style.font.underline = fontunderlinetype.doubleaccounting;//下划线类型
看看效果:

.NET读写Excel工具Spire.Xls使用 Excel单元格控制(3)

  是不是更简单,range的范围选择也很灵活。

3.3 合并单元格

  合并单元格在用excel做报表的时候很有用,在c#中操作合并单元格,其实也非常容易。

//将a5-b6的单元格合并
sheet.range["a5:b6"].merge();
//将某一行全部合并
sheet.rows[7].merge();

这里要注意:合并一行的话,不是把所有一行单元格都合并掉,而是默认合并到最后一列(取最大有值的列)。效果如下:

.NET读写Excel工具Spire.Xls使用 Excel单元格控制(3)

  有的时候需要取消合并单元格,其实和上面原理是一样的,用的是unmerge方法。这里就不再演示。

3.4 单元格的其他功能

  其实单元格的操作还有很多,例如格式的复制应用到其他单元格,隐藏行或者列,插入行或者列等等,这些做起来其实都很简单,可以参考官方网站提供的教程,由于我这方面用得少,就不详细介绍了,以后自己用得上的话,也是去翻这些文档:官方教程链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。