首先确定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. [Flex] ButtonBar系列——如何给ButtonBar添加一个ViewStack

    <?xml version="1.0" encoding="utf-8"?> <!--如何给ButtonBar添加一个ViewStack--& ...

  2. ArcGIS Engine 下投影坐标和经纬度坐标的相互转换

    ArcGIS Engine 下投影坐标和经纬度坐标的相互转换 投影转经纬度 ); pPoint.Project(pSRF.CreateGeographicCoordinateSystem((int)e ...

  3. String Format for DateTime

    This example shows how to format DateTime using String.Format method. All formatting can be done als ...

  4. SQL Server 2012 Enterprise Core Edition和SQL Server 2012 Enterprise Edition的区别

    core没有图形界面,只有power shell界面,给没有图形界面的windows用的.

  5. 慕课网-安卓工程师初养成-1-6 MyEclipse的使用简介

    来源 http://www.imooc.com/video/1414 http://www.my-eclipse.cn/ MyEclipse 2014 官方版下载地址  声明:MyEclipse 20 ...

  6. 学习记录 java随机数的产生机制

    java 随机数 一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100 ...

  7. Android 类库打包、发布方法

    开发Android应用的时候,对于可用于多个应用的公用的部分,或是打算发布给第三方进行应用集成的部分,要把这部分打包成类库怎么做呢? Android应用使用ADT打包成apk,apk中包含了运行程序所 ...

  8. 华为OJ平台——矩阵乘法

    题目描述: 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C. 输入: 1.第一个矩阵的行数 2.第一个矩阵的列数(也是第二个矩阵的行数) 3.第二个矩阵 ...

  9. Leetcode001 two sum

    /* c++ STL is much nore than what i think before in these aspects: * initializer for node element in ...

  10. PHP获取今天、昨天、明天的日期

    <?php echo "今天:".date("Y-m-d")."<br>"; echo "昨天:".d ...