C#利用NPOI逐列读取excel内容
时间:2017-07-22 14:44:51
收藏:0
阅读:804
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using System.IO;
namespace www.xinduofen.cn
{
class NpoiOperateExcel
{
///
/// 逐列读取excel内容,如果某个单元格中无内容,则将以空字符串形式填写到List《string》的相应位置,以string.IsNullOrEmpty(str)形式判断是否为空即可
///
/// 代表excel表格保存的地址,包括"文件名.xls"
/// 代表数据读取的起始行(1,2,3.......65536)最多支持65536行
/// 代表数据读取的结束行(1,2,3.......65536)最多支持65536行
/// 代表数据读取的起始列(1,2,3......256)最多支持256列
/// 代表数据读取的结束列(1,2,3......256)最多支持256列
/// 代表将要读取的sheet表的索引位置
/// 返回 “不为空” 代表读取成功,否则为读取失败;读取数据list《string》代表一列数据,有多少个就代表有多列数据(所有列上对齐)
public static List> colReadSection(string save_address, int start_row, int stop_row,
int sart_column, int stop_column, int sheet_number)//读取excel表格相应工作表的部分数据
{
List> data = null;//初始化为空
FileStream readfile = null;
try
{
//如果传入参数合法
if (!string.IsNullOrEmpty(save_address) && start_row > 0 && stop_row > 0 && sart_column > 0 && stop_column > 0 && sheet_number > 0)
{
readfile = new FileStream(save_address, FileMode.Open, FileAccess.Read);
HSSFWorkbook hssfworkbook = new HSSFWorkbook(readfile);
ISheet sheet = hssfworkbook.GetSheetAt(sheet_number - 1);
if (sheet != null)
{
for (int columnIndex = sart_column - 1; columnIndex < stop_column; columnIndex++) {
List oneCol= new List();
for (int rowIndex = start_row - 1; rowIndex < stop_row; rowIndex++) {
IRow row = sheet.GetRow(rowIndex);
if (row != null)
{
ICell cell = row.GetCell(columnIndex);
if (cell != null)
{
oneCol.Add(cell.StringCellValue);
}
else
{
oneCol.Add("");//填充空的数据
}
}
else {
oneCol.Add("");//填充空的数据
}
}
if (data == null)
{
data = new List>();//初始化
}
data.Add(oneCol);
}
}
}
}
catch (Exception)
{
Console.WriteLine("NpoiOperateExcel.colReadSection方法产生了异常!");
}
finally
{
if (readfile != null) { readfile.Close(); }
}
return data;
}
}
}
内容所有权属于:北京继豪电子(专业研究体质测试仪器)
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using System.IO;
namespace www.xinduofen.cn
{
class NpoiOperateExcel
{
///
/// 逐列读取excel内容,如果某个单元格中无内容,则将以空字符串形式填写到List《string》的相应位置,以string.IsNullOrEmpty(str)形式判断是否为空即可
///
/// 代表excel表格保存的地址,包括"文件名.xls"
/// 代表数据读取的起始行(1,2,3.......65536)最多支持65536行
/// 代表数据读取的结束行(1,2,3.......65536)最多支持65536行
/// 代表数据读取的起始列(1,2,3......256)最多支持256列
/// 代表数据读取的结束列(1,2,3......256)最多支持256列
/// 代表将要读取的sheet表的索引位置
/// 返回 “不为空” 代表读取成功,否则为读取失败;读取数据list《string》代表一列数据,有多少个就代表有多列数据(所有列上对齐)
public static List> colReadSection(string save_address, int start_row, int stop_row,
int sart_column, int stop_column, int sheet_number)//读取excel表格相应工作表的部分数据
{
List> data = null;//初始化为空
FileStream readfile = null;
try
{
//如果传入参数合法
if (!string.IsNullOrEmpty(save_address) && start_row > 0 && stop_row > 0 && sart_column > 0 && stop_column > 0 && sheet_number > 0)
{
readfile = new FileStream(save_address, FileMode.Open, FileAccess.Read);
HSSFWorkbook hssfworkbook = new HSSFWorkbook(readfile);
ISheet sheet = hssfworkbook.GetSheetAt(sheet_number - 1);
if (sheet != null)
{
for (int columnIndex = sart_column - 1; columnIndex < stop_column; columnIndex++) {
List oneCol= new List();
for (int rowIndex = start_row - 1; rowIndex < stop_row; rowIndex++) {
IRow row = sheet.GetRow(rowIndex);
if (row != null)
{
ICell cell = row.GetCell(columnIndex);
if (cell != null)
{
oneCol.Add(cell.StringCellValue);
}
else
{
oneCol.Add("");//填充空的数据
}
}
else {
oneCol.Add("");//填充空的数据
}
}
if (data == null)
{
data = new List>();//初始化
}
data.Add(oneCol);
}
}
}
}
catch (Exception)
{
Console.WriteLine("NpoiOperateExcel.colReadSection方法产生了异常!");
}
finally
{
if (readfile != null) { readfile.Close(); }
}
return data;
}
}
}
内容所有权属于:北京继豪电子(专业研究体质测试仪器)
评论(0)