asp.net 把多个excel导入到多个datatable中二种方法

asp教程.net 把多个excel导入到多个datatable中二种方法
Microsoft.Office.Interop.Excel.Application TheExcelApp=new Microsoft.Office.Interop.Excel.Application();//默认情况下有三个工作表

TheExcelApp.Visible=false;

int colIndex,rowIndex
colIndex=1;
//第一行输出字段名
foreach(DataColumn dc in dt.Columns)//假设数据在dt表中
{
  TheExcelApp.Worksheets("sheet1").Activate();//让sheet1称为当前工作表,以便写入数据
  TheExcelApp.Cells(1,colIndex).value=dc.ColumnName;
}
//从第二行开始写入数据
for(colIndex=0;colIndex<dt.Columns.Count-1;colIndex++)
{
   for(rowIndex=0;rowIndex<dt.Rows.Count-1;rowIndex++)
   {
      //Excle的行列都是从1开始算,所以从row+2
      TheExcelApp.Cells(row+2,colIndex+1).value=dt.Rows[rowIndex][colIndex];
   }
   TheExcelApp.ActiveSheet.columns(colIndex+1).autofit();//自动调整宽度
}
TheExcelApp.Worksheets("sheet1").saveas(fileName);//保存

//方法二
直接用using(养成好习惯,呵呵)。

HSSFWorkbook hssfworkbook;
void InitializeWorkbook(string path)
{
  //read the template via FileStream, it is suggested to use FileAccess.Read to prevent file lock.
  //book1.xls is an Excel-2007-generated file, so some new unknown BIFF records are added. 
  using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
  {
  hssfworkbook = new HSSFWorkbook(file);
  }
}
接下来我们要开始写最重要的函数ConvertToDataTable,即把HSSF的数据放到一个DataTable中。
 
HSSFSheet sheet = hssfworkbook.GetSheetAt(0);
System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

while (rows.MoveNext())
{
  HSSFRow row = (HSSFRow)rows.Current;
  //TODO::Create DataTable row

  for (int i = 0; i < row.LastCellNum; i++)
  {
  HSSFCell cell = row.GetCell(i);
  //TODO::set cell value to the cell of DataTables
  }
上面的结构大家都应该能看懂吧,无非就是先遍历行,再遍历行中的每一列。这里引出了一个难点,由于Excel的单元格有好几种类型,类型不同显示的东西就不同,具体的类型有 布尔型、数值型、文本型、公式型、空白、错误。
public enum HSSFCellType
{
  Unknown = -1,
  NUMERIC = 0,
  STRING = 1,
  FORMULA = 2,
  BLANK = 3,
  BOOLEAN = 4,
  ERROR = 5,
}

这里的HSSFCellType描述了所有的类型,但细心的朋友可能已经发现了,这里没有日期型,这是为什么呢?这是因为Excel底层并没有一定 日期型,而是通过数值型来替代,至于如何区分日期和数字,都是由文本显示的样式决定的,在NPOI中则是由HSSFDataFormat来处理。为了能够 方便的获得所需要的类型所对应的文本,我们可以使用HSSFCell.ToString()来处理。
于是刚才的代码则变成了这样:

HSSFCell cell = row.GetCell(i);

  if (cell == null)
  {
  dr[i] = null;
  }
  else
  {
  dr[i] = cell.ToString();
  }
  }
  dt.Rows.Add(dr);
}

时间: 2016-06-14

asp.net 把多个excel导入到多个datatable中二种方法的相关文章

excel将文本转换为数字的四种方法

  excel将文本转换为数字的四种方法          方法一,利用函数查错工具,如果数字是文本格式的,在左上角会有一个小三角的东西,点击单元格,选中有个惊叹号样子的小方格,选择"转换为数字"完成批量转换 方法二,四则运算,就是将文本型数字进行加减乘除的运算,比如对C2进行转换,就写公式=C2*1,就可以将文本转成数值了 方法三,进行"减负运算",它其实也就是四则运算,只是写法有些不一样,比如对C2进行转换,就写公式=--C2,通过计算,就可以将文本型数字转换成

Excel中合并单元格的几种方法及合并单元格快捷键

  Excel中合并单元格的几种方法及合并单元格快捷键          如下图所示,希望将A1到E1,这之间所有单元格合并成一个大单元格操作方法如下: 合并单元格方法一:利用格式菜单上的"合并及居中"按钮合并单元格 ①首先,选中A1.B1.C1.D1.E1这些单元格; ②然后单击"格式"工具栏上面的"合并及居中"按钮; 此时,这几个单元格就已经合并成了一个大单元格了,是不是很简单呀. 合并单元格方法二:利用"设置单元格格式"

excel表格中隔行选取的三种方法

  excel表格中隔行选取的三种方法          有一个excel表格,需要隔N行选取.可能是隔一行,也可能是隔2行.3行. 常见的隔行选取有两种方法: 一.按ctrl键不松用鼠标逐行选取.如果需要选取的行数多,会累死人的. 二.在辅助设置公式或输入字符 - 设置筛选模式 - 筛选 - 选取 - 取消筛选模式.如果是隔列选取,这种方法就不能用了. 除了以上两种外,本文小编新发现一种新的隔行选取方法,估计绝大部分同学都没见过. 步骤1:在H3中输入公式 =A3:F3,再选取H2:H3向下复

ASP.NET批量操作基于原生html标签的无序列表的三种方法_实用技巧

在网页开发中,经常要用到无序列表.事实上在符合W3C标准的div+css布局中,无序列表被大量使用,ASP.NET虽然内置了BulletedList控件,用于创建和操作无序列表,但感觉不太好用.本篇介绍服务器端ASP.NET批量操作基于原生html标签的无序列表的三种方法. 方法一,将li元素做成html控件,加上id,用FindControl方法. aspx代码: <form id="form1" runat="server"> <ul>

Excel 2000访问远程数据的四种方法

excel|访问|数据      Excel 2000作为一个电子表格软件,它不仅有强大的数据处理能力,而且它的报表功能也是十分强大.因而常常用Excel 2000去调用Access.SQL Server.Oracle.DB2等数据库软件建立的大型数据库的内容.用户可以在工作表中对这些数据进行筛选.排序.查询.编辑和打印报表,十分方便,这也是大多数人都熟悉的.但如何去调用这数据呢?本人在这里提供4种方法.    下面四种方法必须要先创建一个数据源,我们以SQL Server7.0内的样本数据库p

C#向Excel报表中插入图片的2种方法

这几天做向Excel插入数据,其中有插入图片的需求,经试验,下面2种方法都可以插入图片,但各有不同的用处.现将这2种方法共享出来,希望需要的朋友进行参考,代码中已经有详细注释了. 注意:使用之前需要引用COM:Microsoft Office 11.0 Object Library 如果引用列表中没有,需要自行添加 C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE 调用方法: MengXianhui.Utility.ExcelReport.

Excel选取单元格区域的13种方法

  要选取一个单元格区域,除了常规的鼠标拖选,还有多少其他的可行方法? 如果有数万行数据要去选取,怎么操作最快? 在包含隐藏行列的情况下如何仅对可见部分进行操作? 多表区域如何选取? 本文讲述了Excel表格中选取单元格区域的13种方法. 方法1:键 (多重选取) 按住键然后用鼠标拖选区域,可以同时选中多个非连续的单元格区域.这样选定的多个非连续区域称之为[多重选定区域],多重选定区域通常情况下不能进行整体的复制和剪切操作(同行同列的除外),但是可以进行数据输入.设置格式等基本操作. 方法2:键

asp.net 怎样实现将EXCEL导入MySQL数据库和导出数据库

问题描述 刚开始学习ASP.net的开发,老师非得要让用MYSQL数据库.目前学习很吃力,总是遇到很多很多问题,求各位大神大腿帮帮忙,指导一下.首先我想确定一下,mysql数据库可以通过OLEDB的方式来连接吗?我通过Session["conn"]="provider={MySQLODBC5.1Driver};server=localhost;port=3306;userid=root;password=sa;database=analyse";来连接,发生错误显示

向Excel中导入TXT文本数据的三种方法

Excel支持导入外部文本文件中的文本内容.通过导入数据的方法我们可以很方便地使用外部数据,在许多时候可以免去重新手动键入文本的麻烦. 在Excel中导入文本有多种方法,我们来看一看-- 1.使用"打开"命令 这是最常用的方法,这种方法可以直接将文本文件打开为一个Excel工作簿. 选择菜单命令"文件|打开",在"打开"对话框中选择"文件类型"为"文本文件",如图1所示,然后找到要导入的文本文件并将其选中,