当前位置: 移动技术网 > IT编程>开发语言>.net > .NET读写Excel工具Spire.Xls使用 Excel文件的控制(2)

.NET读写Excel工具Spire.Xls使用 Excel文件的控制(2)

2017年12月07日  | 移动技术网IT编程  | 我要评论

三胞胎替母寻夫,加斯特罗,饭笙网

前一篇文章:“ .net操作excel利器spire.xls使用(1)入门介绍 ”给大家介绍了spire.xls的基本功能和一些比较。这篇文章将重点介绍c#操作excel文件时,对excel文件本身的相关设置,全局控制的内容。因为这也是c#读写excel文件时经常碰到的文章,也是我在使用过程中的一个学习步骤。本文将首先介绍spire.xls创建和加载文档的基础知识,以及文件保存,多个excel文件合并的操作方法,其中我们还可以对生成的excel文件做更多详细的设置,如,对excel文件属性进行设置等等,其次很多项目中,不仅要生成excel文件,还需要打印并获取一些分页信息;最后介绍一下使用c#设置加密保护excel文件的方法。

1.excel文档的创建、加载与保存

  我们的上一篇文章的初步介绍中,有一个hello excel的例子,其实就已经包括了excel文件新建和保存的方法,非常简单。这一节将着重对每个细节进行更详细点的研究。

1.1 保存excel文件

  excle文件的保存都是使用workbook的savetofile方法,有以下几个版本,可以根据自己的需要,根据文件名,excel文件版本,以及文件格式来保存,方法原型如下,比较简单不再演示,在后续的文章中会在代码中用到。

//根据文件名,文件版本,文件格式信息来保存文件
public void savetofile(string filename);
public void savetofile(string filename, excelversion version);
public void savetofile(string filename, fileformat fileformat);
public void savetofile(string filename, string separator);

1.2 从不同途径加载excel

  使用c#操作excel文件,不一定都是生成excel文件报表之类的,有时候也需要加载已经存在的数据(xml,excle等)来进行修改,然后保存到对应的excel文件中去。加载到excel的方法是workbook对象的loadfromfile、loadfromstream、loadfromxml等方法,方法原型有以下几个:

//从文件加载,根据文件名,保护模式和excel版本
public void loadfromfile(string filename);
public void loadfromfile(string filename, bool preservemode);
public void loadfromfile(string filename, excelversion version);
public void loadfromfile(string filename, string separator);
public void loadfromfile(string filename, string separator, int row, int column);
public void loadfromfile(string filename, string separator, int row, int column, excelversion version);
//从数据流中加载
public void loadfromstream(stream stream);
public void loadfromstream(stream stream, bool loadstyles);
public void loadfromstream(stream stream, excelversion version);
//从xml文件加载
public void loadfromxml(stream stream);
public void loadfromxml(string filename);
//从模版文件加载
public void loadtemplatefromfile(string filename);
public void loadtemplatefromfile(string filename, bool loadstyles);

2.c#设置excel文件属性

  文件属性这个虽然一般人很少用到,但还是介绍一下,毕竟如果文件分发出去的话,将相关属性信息添加完整,还是很有必要的。excel文件属性可以点击文件右键-属性看到界面,如下图我使用wps查看的excel文件属性,使用office excel查看的话,是右边的样子,虽然显示不一样,但原理是一样的:


1.wps显示的excel属性                                        2.office excle显示的文件属性

  设置excel文件属性的方法在workbook对象的documentproperties属性中,这个属性是一个xlsbuiltindocumentproperties类型,在spire.xls.core.spreadsheet.collections命名空间,通过vs的对象浏览器也可以发现其实现的一些原理,可以扩展到其他的组件使用中。看看一个简单的例子:

#region 2.excel文件属性例子
static void exceltest2()
{   
 workbook workbook = new workbook();

 //修改文档属性信息,这样在发布的时候,可以通过文档显示公司以及文件人的信息
 workbook.documentproperties.author = "张三";   //作者
 workbook.documentproperties.subject = "测试文件属性"; //主题
 workbook.documentproperties.title = "测试excel文件"; //标题
 workbook.documentproperties.company = "xx有限公司";  //单位
 workbook.documentproperties.comments = "保留文件评论"; //评论
 workbook.documentproperties.keywords = "测试 excel "; //关键词
 workbook.documentproperties.createdtime = datetime.now; //创建时间
 //todo:还有其他属性,可以参考xlsbuiltindocumentproperties的相关属性   

 //将excel文件保存到指定文件,还可以指定excel版本
 workbook.savetofile("sample.xls", excelversion.version2007);
}
#endregion

  注意,由于我没有安装office 2007及以上版本,用wps显示的时候,有点问题,要用wps转换为2003版本后才能看出来,这可能是wps的原因,调试生成的文件发现,这些属性值都是存在的。所以我也没去折腾,安装个office 真的很麻烦。

3.c#加密和保护excel文件

  相信很多人都用过office的加密以及保护功能,对于excel来说,加密和保护的范围更加广泛了:不仅可以加密文件,还可以保护指定的sheet,指定的单元格等等。

3.1 加密excel文件

  excel文件级的加密其实很简单,就是workbook对象的protect方法,传递加密密码即可;如果想要取消密码,则使用workbook.unprotect(),注意取消加密是不需要密码的,excel软件操作也是的,所以程序操作也不需要。

#region 3.加密excel文件例子
static void exceltest3()
{
 workbook workbook = new workbook();
 workbook.protect("pwd111");//设置保护加密的 密码 :pwd111
 //将excel文件保存
 workbook.savetofile("sample.xls", excelversion.version2007);
}
#endregion

加密后打开文件就是这个样子了:

3.2 保护sheet与单元格

   sheet的保护更加灵活一点,使用的是worksheet对象的protect方法,传递的参数是 保护的密码,以及可选的保护类型(更加丰富的保护类型),看看下面的例子:

workbook workbook = new workbook();

worksheet sheet = workbook.worksheets[0];

//保护sheet
sheet.protect("test", sheetprotectiontype.all);

//将excel文件保存
workbook.savetofile("sample.xlsx", excelversion.version2010);

实现的效果应该和wps的“保护工作表”界面类似,如下图:

保护工作表的作用一般是防止误操作或者对于有版权保护的,不能轻易更改的情况。大家看情况使用,我这里很少用到,只是了解到了,顺便说一下。

static void exceltest4()
{
 workbook workbook = new workbook();
 workbook.createemptysheets(1);
 worksheet sheet = workbook.worksheets[0];

 sheet.range["a1"].text = "锁定";
 sheet.range["b1"].text = "未锁定";

 sheet.range["a1"].style.locked = true;
 sheet.range["b1"].style.locked = false;

 //一定要对工作表进行保护,才能生效
 sheet.protect("test", sheetprotectiontype.all);

 workbook.savetofile(@"sample_lock.xlsx", excelversion.version2010);
}

  今天就到此为止把,虽然都很简单,但了解一下,对以后熟练开发还是有好处的。例子非常简单,代码都在上面,到本系列完成后,再打包一份代码。

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网