首先确定excel的版本为97~2003版本

其次创建一个帮助类——ExcelHelper

//单个sheet
public static DataTable AnalysisExcel(string fileName,string sheetName)
{
using(Stream stream=new FileStream(fileName,FileMode.Open))
{
HSSFWorkbook work=new HSSFWorkbook(stream);
int sheetCount=wook.Count;
ISheet spusheet=work.GetSheet("spu");//spu为sheet名称
DataTable sputable=new DataTable();
}
return new DataTable();
} //多个sheet
public static List<DataTable> AnalysisExcel(Stream fileStream,List<String> sheetNames)
{
HSSFWorkbook work=new HSSFWorkboox(fileStream);
int sheetCount=work.Count;
List<DataTable> tables=new List<DataTable>();
foreach(string sheetname in sheetNames)
{
tables.Add(GetDataTable(work,sheetName));
}
return tables;
} //获取到datatable
public static DataTale GetDataTable(HSSFWorkbook work,string sheetName)
{
ISheet sheet=work.GetSheet(sheetName);
DataTable dbTable=new DataTable();
int firstRowNum =sheet.FirstRowNum;
IRow titleRow=sheet.GetRow(firstRowNum);
List<ICell> titleCell=titleRow.Cells;
foreach(var item in titleCell)
{
string titleName=item.StringCellValue;
DataColumn col=new DataColumn(titleName);
dbTable.Columns.Add(col);
}
for(int i=;i<=sheet.LastRowNum;i++)
{
DataRow dbRow=dbTable.NewRow();
IRow row=sheet.GetRow(i);
if(row!=null)
{
for(int j=;j<titleCell.Count;j++)
{
ICell cell=row.GetCell(j);
dbRow[j]=cell==null?"":cell.ToString();
}
dbTable.Rows.Add(dbRow);
}
else
continue;
}
return dbTable;
}

引用方法如下:

Stream stream=Request.Files[].InputStream;
List<string> sheetNames=new List<string>();
sheetNames.Add("spu");
sheetNames.Add("sku");
List<DataTable> tables=ExcelHelper.AnalysisExcel(stream,sheetName);
DataTable spuTable=table[];
DataTable skuTable=table[];
............此处省略

Excel导入数据(97--2003版本)的ExcelHelper的更多相关文章

  1. Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”

    从Excel导入数据到Sql server 时,由于表中的数据有的很长,导入时出现如下错误(如果数据不是很长,255内以内,则不会出现错误): 出错原因: SQL Server的导入导出为了确定数据表 ...

  2. C#实现Excel模板导出和从Excel导入数据

    午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.Office.Interop.Excel 3.封装的Exc ...

  3. Open XML操作Excel导入数据

    项目中发现使用OleDb(using System.Data.OleDb)相关对象处理Excel导入功能,不是很稳定经常出问题,需要把这个问题解决掉.项目组提出使用OpenXML来处理Excel的导入 ...

  4. 项目经验之:再来一章:excel导入数据 封装成最棒的不容易!!!

    我见过很的系统,包括OA,ERP,CRM等,在常用的功能当中,从外部导入数据是最常用到的.因为很多客户需要以excel的形式提供数据,,这样的方式我们又如何做呢, 大家最常见的做法可能是这样的,在需要 ...

  5. excel导入 导出 兼容各个版本服务器不装EXCEL也可以

    给出 demo源码: http://pan.baidu.com/s/1hqGMudY 提取码:pw4n首先要引用 NPOI.dll (可在网上下载!) //导入 public void OnSubmi ...

  6. Dynamics CRM EXCEL导入数据字段类型为选项集时的注意事项

    在开始先展示下CRM的导入数据涉及选项集字段时的一个问题 下图是选项集字段的属性 下图是我要导入的excel中的列值,可以看出列明和字段名是一致的,而列值却不是选项集中已有的选项 在导入校验时,只要字 ...

  7. C# Excel导入数据

    表 表的创建脚本 CREATE TABLE [dbo].[TB_PROJECTS_New1]( , ) NOT NULL, ) NULL, ) NULL, , ) NULL, , ) NULL, , ...

  8. 实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件

    今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多 ...

  9. PHP Excel导入数据到MySQL数据库

    数据导出已经有了,怎么能没有数据导入呢,同样使用TP5框架,首先需要下载phpexcel.zip,放到第三方类库目录vendor目录下,然后有一个页面可以让你选择要导入的Excel文件,然后点击导入按 ...

随机推荐

  1. PostgreSQL 数据迁移

    新主机PostgreSQL需要事先建立和原主机名称相同的用户和数据库. 备份原主机数据库 pg_dump -U <UserName> -p <PortNum> <DBNa ...

  2. C# 中将多个空格替换成一个空格

    2013-04-17 15:36 C# 中如何将多个空格替换成一个空格? 1 myString = Regex.Replace(myString, @"\s+", " & ...

  3. [SQL]SQL语言入门级教材_SQL语言快速入门(五)

    SQL语言快速入门(一) SQL是英文Structured Query Language的缩写,意思为结构化查询语言. SQL语言的主要功能就是同各种数据库建立联系,进行沟通.按照ANSI(美国国家标 ...

  4. Spring MVC 中的基于注解的 Controller【转】

    原文地址:http://my.oschina.net/abian/blog/128028 终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 H ...

  5. 黑马程序员_Java基本数据的自动拆装箱及享元设计模式视频学习笔记

    ------- android培训.java培训.期待与您交流! ---------- 装箱:把基本数据类型装成java类(被托管?).         拆箱:把java类拆成基本数据类型(取消托管? ...

  6. springMVC之HelloWorld

    一.总结 1.web项目一定要把引用的jar包放在WEB-INF/lib下(common-logging1.2,spring4.1.6所有包,其实不需要那么多,懒得筛选了,) 2.web.xml中要初 ...

  7. dubbo服务框架学习

    ====================================================================================== 1.提供注册服务.消费者可 ...

  8. Sqool与kettle开源的ETL工具

    现在的ETL都是基于管道的模式(数据流)运行,比较有名的有 TaskCTL ========================================== 数据抽取的开源工具 一个是RDBMS ...

  9. php读取目录及子目录下所有文件名的方法

    本文实例讲述了php读取目录及子目录下所有文件名的方法,分享给大家供大家参考.具体实现方法如下: 一般来说php中读取目录下的文件名的方式确实不少,最简单的是scandir,具体代码如下: $dir= ...

  10. Java基础知识:序列化和反序列化

    一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...