1、创建一个空白的xls和xlsx文件
1、创建一个空白的xls文件
Step1:先引入库NPOI.dll文件
Step2:
①:实例化一个workbook,实为在内存表中创建一个xls文件
NPOI.HSSF.UserModel.HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();
但是,如果打开此时的workbook会报错,原因是至少需要包含一个Sheet
②:创建一个Sheet,如果方法不带参数,系统自动给出SheetName,带一个参数表示自定义SheetName
NPOI.SS.UserModel.ISheet sheet = workbook.CreateSheet("Sheet1");
③:最后就是把这个HSSFWorkbook实例写入文件了,代码也很简单,如下所示:
FileStream fs = new FileStream("1.xls", FileMode.Create);
workbook.Write(fs);
fs.Close();
*************************************************************************************
2:创建一个空白的xlsx文件
step1:先导入所需要的dll文件
NPOI.dll
NPOI.OOXML.dll
NPOI.OpenXml4Net.dll
NPOI.OpenXmlFormats.dll
ICSharpCode.SharpZipLib.dll
step2:具体代码实现
NPOI.XSSF.UserModel.XSSFWorkbook workbook = new NPOI.XSSF.UserModel.XSSFWorkbook();
workbook.CreateSheet("Sheet1");
FileStream fs = new FileStream("1.xlsx", FileMode.Create);
workbook.Write(fs);
fs.Close();
**********************************************************
3:自动识别xls和xlsx文件
NPOI的版本号之所以从1.2.5直接跳到2.0,很大原因是对Office 2007格式的支持,也正因为如此,使用NPOI 2.0会比以前的版本显得稍微复杂些,因为NPOI同时提供了多个命名空间的库,包括HSSF(Excel 2003), XSSF(Excel 2007), XWPF(Word 2007)。
为了能够在读取时自动识别Excel格式,而不是由你自己去判断,NPOI提供了一个非常方便的类NPOI.SS.WorkbookFactory。
public class WorkbookFactory
{
public static IWorkbook Create(POIFSFileSystem fs){...}
public static IWorkbook Create(OPCPackage pkg){...}
public static IWorkbook Create(Stream inputStream){...}
public static IFormulaEvaluator CreateFormulaEvaluator(IWorkbook workbook){...}
}
这里先介绍下POIFSFileSystem和OPCPackage的区别,POIFSFileSystem即OLE2 格式(俗称ActiveX文档格式)的读写库,OPCPackage即OOXML格式的读写库,两套库分别用于Excel 2003和Excel 2007,当然由于是底层库,他们不局限于读取xls和xlsx格式,例如你可以用POIFSFileSystem读取Thumb.db文件格式,具体可参考这里。
知道了POIFSFileSystem和OPCPackage的区别,你应该知道第一、第二个方法是干嘛的了吧,没错,这两个是需要你自己主动判断打开的文件是啥类型的,然后把读到的文件系统传给WorkbookFactory,它会自动根据文件系统的类型返回HSSFWorkbook或XSSFWorkbook,但因为这两个类都实现了IWorkbook接口,所以大部分情况下你不需要去关心你到底在操作哪个类的实例,除非你用到了Excel 2007特有的一些功能时,才需要强类型转换成XSSFWorkbook。
第三个方法则是今天要介绍的重点,它具有自动识别功能,只要你传Stream对象进去,它就能知道你传进去的到底是xls还是xlsx,然后返回相应的实例。
最后一个则是返回公式计算对象的,原理类似。HSSF和XSSF都有一个公式计算类,分别是HSSFFormulaEvaluator和XSSFFormulaEvaluator。
自动识别导入的xls和xlsx文件,代码如下
FileStream fs = File.OpenRead("1.xlsx");
NPOI.SS.UserModel.IWorkbook workbook= NPOI.SS.UserModel.WorkbookFactory.Create(fs);
MessageBox.Show(workbook.GetSheetAt().GetRow().GetCell().StringCellValue);
fs.Close();
1、创建一个空白的xls和xlsx文件的更多相关文章
- C# 操作 Excel(.xls和.xlsx)文件
C#创建Excel(.xls和.xlsx)文件的三种方法 .NET 使用NPOI导入导出标准Excel C# 使用NPOI 实现Excel的简单导入导出 NET使用NPOI组件将数据导出Excel-通 ...
- 写入数据到Plist文件中时,第一次要创建一个空的数组,否则写入文件失败
#pragma mark - 保存数据到本地Plist文件中 - (void)saveValidateCountWithDate:(NSString *)date count:(NSString *) ...
- QTemporaryDir及QTemporaryFile建立临时目录及文件夹(创建一个随机名称的目录或文件,两者均能保证不会覆盖已有文件)
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址:本文标题:QTemporaryDir及QTemporaryFile建立临时目录及文件夹 本文地址: ...
- python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件)
# python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件) import tkinter as tk from tkinter import filedial ...
- C#创建Excel(.xls和.xlsx)文件的三种方法
生成EXCEL文件是经常需要用到的功能,我们利用一些开源库可以很容易实现这个功能. 方法一:利用excellibrary,http://code.google.com/p/excellibrary/ ...
- 如何使用Java创建Excel(.xls 和 .xlsx)文件 并写入数据
1,需要依赖的jar包, <!-- POI(operate excel) start --> <!-- the version of the following POI packag ...
- AE创建一个空白的Shapefile
1.IField和IFieldEdit区别: IFieldEdit是继承IField的,因为IField的属性大部分是只读的(read-only),所以IFieldEdit就在IField的基础上多了 ...
- Django命令行相关命令 以及创建一个空白网页的步骤
django相关命令行命令: django.admin.py是Django的一个用于管理任务的命令行工具,manage.py是对django-admin.py的简单包装,每个Django Projec ...
- Excel 2010/2013/2016在鼠标右键新建xls或xlsx文件后,打开报错“无法打开文件”“文件格式或文件扩展名无效”
近段时间,陆续有两个同事先后出现同样的问题(在Excel多个版本都可能出现),问题描述: 当用鼠标右键在任意文件夹或电脑桌面“新建”→“ Microsoft Excel 工作表”,再用鼠标双击打开这个 ...
随机推荐
- 3D数学读书笔记——3D中的方位与角位移
本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25339595 方位和角位移 ...
- jsondataobjects
jsondataobjects GITHUB: https://github.com/ahausladen/jsondataobjects.git 跨平台JSON库 Json Data Objects ...
- waitdialogform z
namespace DevExpress.Utils { using DevExpress.LookAndFeel; using DevExpress.Skins; using DevExpress. ...
- pytest文档19-doctest测试框架
前言 doctest从字面意思上看,那就是文档测试.doctest是python里面自带的一个模块,它实际上是单元测试的一种. 官方解释:doctest 模块会搜索那些看起来像交互式会话的 Pytho ...
- python笔记2-冒泡排序
前言 面试的时候经常有面试官喜欢问如何进行冒泡排序?这个问题相信能难倒一批英雄好汉,本篇就详细讲解如何用python进行冒泡排序. 一.基本原理 1.概念: 冒泡排序(Bubble Sort),是一种 ...
- 使用web.xml方式加载Spring时,获取Spring context的两种方式
使用web.xml方式加载Spring时,获取Spring context的两种方式: 1.servlet方式加载时: [web.xml] <servlet> <servlet-na ...
- 利用nginx加速web访问
起因---------- 在最近新系统的设计中对于首页打开速度的问题做了一些考虑,由于页面上还是以动态数据为主,所以简单的静态化数据可能并不行,所以需要从业务和技术结合的角度去考虑这个问题.由于有些数 ...
- java之 22天 GUI 图形界面编程(一)
转自:http://takeme.iteye.com/blog/1876850 GUI(图形用户界面) import java.awt.Button; import java.awt.FlowLayo ...
- JavaScript前世今生
JavaScript前世今生,HelloWorld与开发环境 JavaScript历史 大概在1992年,一家称作Nombas的公司开始开发一种叫做C--(C-minus-minus,简称Cmm)的嵌 ...
- mysql必知必会(一、数据库基础知识)
基础概念 1.数据库(database):是一个以某种有组织的方式存储的数据集合.(保存有组织的数据的容器) 2.表(table):是一种结构化的文件,可用来存储某种特定类型的数据.(表名在同个数据库 ...