asp.net 使用NPOI读取excel文件
asp.net 使用NPOI读取excel文件内容
NPOI下载地址:NPOI
public class ExcelHelper
{
/// <summary>
/// 读取Excel文件数据到DataSet,一个Sheet对应一个DataTable
/// </summary>
/// <param name="strExcelFilePath">Excel文件的物理路径</param>
/// <returns></returns>
public static DataSet GetDataFromExcel(string strExcelPhysicalPath, out string strError)
{
try
{
DataSet dsResult = new DataSet();
strError = ""; IWorkbook wbook = null;
using (FileStream fs = new FileStream(strExcelPhysicalPath, FileMode.Open, FileAccess.Read))
{
if (strExcelPhysicalPath.IndexOf(".xlsx") > )
{
wbook = new XSSFWorkbook(fs);
}
else
{
wbook = new HSSFWorkbook(fs);
}
} for (int i = ; i < wbook.NumberOfSheets; i++)
{
ISheet wsheet = wbook.GetSheetAt(i);
if (wsheet == null) continue; DataTable dtSheet = GetDataFromSheet(wsheet, out strError);
if (dtSheet != null)
{
dtSheet.TableName = wsheet.SheetName.Trim();
dsResult.Tables.Add(dtSheet);
}
else
{
dsResult = null;
break;
}
}
return dsResult;
}
catch (Exception ex)
{
strError = ex.Message.ToString();
return null;
}
} private static DataTable GetDataFromSheet(ISheet wsheet, out string strError)
{
try
{
DataTable dtResult = new DataTable();
strError = ""; //取sheet最大列数
int max_column = ;
for (int i = wsheet.FirstRowNum; i <= wsheet.LastRowNum; i++)
{
IRow rsheet = wsheet.GetRow(i);
if (rsheet != null && rsheet.LastCellNum > max_column)
{
max_column = rsheet.LastCellNum;
}
}
//给DataTable添加列
for (int i = ; i < max_column; i++)
{
dtResult.Columns.Add("A" + i.ToString());
} for (int i = wsheet.FirstRowNum; i <= wsheet.LastRowNum; i++)
{
DataRow dRow = dtResult.NewRow();
IRow rsheet = wsheet.GetRow(i); if (rsheet == null) continue; for (int j = rsheet.FirstCellNum; j < rsheet.LastCellNum; j++)
{
ICell csheet = rsheet.GetCell(j); if (csheet == null) continue; switch (csheet.CellType)
{
case CellType.Blank:
dRow[j] = "";
break;
case CellType.Boolean:
dRow[j] = csheet.BooleanCellValue;
break;
case CellType.Error:
dRow[j] = csheet.ErrorCellValue;
break;
case CellType.Formula:
try
{
dRow[j] = csheet.NumericCellValue; short format1 = csheet.CellStyle.DataFormat;
if (format1 == || format1 == || format1 == )
{
dRow[j] = csheet.NumericCellValue.ToString("#0.00");
}
}
catch
{
dRow[j] = csheet.StringCellValue.Trim();
}
break;
case CellType.Numeric:
try
{
short format2 = csheet.CellStyle.DataFormat;
if (format2 == || format2 == || format2 == || format2 == )
{
dRow[j] = csheet.DateCellValue;
}
else
{
dRow[j] = csheet.NumericCellValue;
}
if (format2 == || format2 == || format2 == )
{
dRow[j] = csheet.NumericCellValue.ToString("#0.00");
}
}
catch
{
dRow[j] = csheet.StringCellValue.Trim();
}
break;
case CellType.String:
dRow[j] = csheet.StringCellValue.Trim();
break;
default:
dRow[j] = csheet.StringCellValue.Trim();
break;
}
} dtResult.Rows.Add(dRow);
}
return dtResult;
}
catch (Exception ex)
{
strError = ex.Message.ToString();
return null;
}
}
}
asp.net 使用NPOI读取excel文件的更多相关文章
- NPOI 读取Excel文件
private void buttonExcel_Click(object sender, EventArgs e) { FileStream fs = null; List<ISheet> ...
- NPOI读取excel文件导出数据, 而此时文件正在打开中抛异常怎么办
项目中需要用到一些数值表格, 方便起见都是用excel来的. 而如果excel正打开中, 直接使用npoi制作的工具来导出数据的话, 在这一行将会异常: workbook = new XSSFWork ...
- ASP.NET MVC - NPOI读取Excel
引入: using System; using System.Data; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserM ...
- NPOI读取Excel文件
public class ExcelOperator { public static List<DataTable> Read(string fileName) { List<Dat ...
- asp.net mvc NPOI 生成Excel文件
private string PushToDown(string addtime) { DataTable dt = _bCreateCode.PushtoExcel(addtime); //1.实例 ...
- C#利用NPOI操作Excel文件
NPOI作为开源免费的组件,功能强大,可用来读写Excel(兼容xls和xlsx两种版本).Word.PPT文件.可是要让我们记住所有的操作,这便有点困难了,至此,总结一些在开发中常用的针对Excel ...
- 使用NPOI读取Excel表格内容并进行修改
前言 网上使用NPOI读取Excel文件的例子现在也不少,本文就是参考网上大神们的例子进行修改以适应自己需求的. 参考博文 http://www.cnblogs.com/restran/p/38894 ...
- c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出
c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...
- asp.net读取excel文件多种方法
asp.net读取excel文件的三种方法示例,包括采用OleDB读取Excel文件.引用的com组件读取Excel文件.用文件流读取. 方法一:采用OleDB读取Excel文件 把Excel文件 ...
随机推荐
- [译]Vulkan教程(22)创建顶点buffer
[译]Vulkan教程(22)创建顶点buffer Vertex buffer creation 创建顶点buffer Introduction 入门 Buffers in Vulkan are re ...
- java对象引用测试
代码 java中初始化一个实例,这个实例对应的只是对象的一个地址,并不是对象本身.将这个实例赋值给别的实例时,新实例也是指向对象的地址,两个实例实际指向的是同一个实例.对新实例赋值,老实例也会同时改变 ...
- PHP 微信公众号/小程序获取openid,用户信息
1.获取code (获得openid的前置条件) 地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redi ...
- Linux下离线安装python项目的依赖包
第一步新建一个site-packages文件夹,把python项目有需要的依赖包名称导出到site-packages下的requirements.txt中 $ pip3 freeze > req ...
- 基于SSM的crm管理系统
学完crm后的第一个项目实践,前端样式与标签库都是现成的. 开发环境 eclipse,mysql,jdk1.7 项目架构 整合思路 Dao层: 1.SqlMapConfig.xml,添加别名,但是需要 ...
- RandomAccessFile()实现用户注册功能, 新增,查询,更新
package seday03.raf;import java.io.IOException;import java.io.RandomAccessFile;import java.util.Arra ...
- Oracle数据库之第二篇
/* 多表查询 多个数据库表做连接查询 使用场景: 查询的数据来源为多个表 */ --查询员工信息和员工的部门信息 select * from emp; select * from dept; --使 ...
- 关于kubernetes我们还有什么可做的?
kubernetes在容器编排大战中由于应用的可移植性以及支持混合云/多云部署方式上的灵活性.加上开放可扩展的理念,使得周边社区非常活跃.从既有调研结果看,kubernetes已成为容器编排领域的标准 ...
- 从零开始制作cli工具,快速创建项目脚手架
背景 在工作过程中,我们常常会从一个项目工程复制代码到一个新的项目,改项目配置信息.删除不必要的代码. 这样做的效率比较低,也挺繁琐,更不易于分享协作. 所以,我们可以制作一个cli工具,用来快速创建 ...
- JQuery javascript实现父子页面相互调用
javascript实现父子页面相互调用 By:授客 QQ:1033553122 场景1 父页面调用子页面 如上图,在iframe子页面的<script>元素中,定义了taskStatus ...