VS2010 读取excel文件的三种方法
方法一:NPOI
优点:
NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。
使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。
操作步骤:
一、下载NPOI:http://down.gougou.com/down?cid=DAEA322D9D7F934B898077FB01C3A8CB02A746E6
二、项目添加引用;
三、首先把如下代码封装成一个ExcelHelper类;
四、调用方法。
代码:(经测试)
/// <summary>
/// 由Excel导入DataSet,如果有多个工作表,则导入多个DataTable
/// </summary>
/// <param name="excelFileStream">Excel文件流</param>
/// <param name="headerRowIndex">Excel表头行索引</param>
/// <returns>DataSet</returns>
public static DataSet ImportDataSetFromExcel(Stream excelFileStream, string sheetName, int headerRowIndex)
{
DataSet ds = new DataSet();
HSSFWorkbook workbook = new HSSFWorkbook(excelFileStream);
string sheetname = null;
HSSFSheet sheet = null;
try
{
sheetname = sheetName.Substring(0, sheetName.Length - 1);
sheet = workbook.GetSheet(sheetname);//"BlankSubtraction1"
if (sheet != null)
{
DataTable table = new DataTable();
HSSFRow headerRow = sheet.GetRow(headerRowIndex);
int cellCount = headerRow.LastCellNum;
for (int i = headerRow.FirstCellNum; i < 20; i++)
{
//string tst1 = headerRow.GetCell(1).ToString();
//string tst2 = headerRow.GetCell(1).StringCellValue.Trim();
if (headerRow.GetCell(i) != null)
{
如果遇到第一个空列,则不再继续向后读取
//cellCount = i + 1;
//break;
DataColumn column = new DataColumn(i.ToString());
table.Columns.Add(column