您好,登錄后才能下訂單哦!
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
{
/// <summary>
/// 逐行讀取某一個excel文件的某一個工作表有效范圍內的全部內容,如果某個單元格中無內容,則將以空字符串形式填寫到List《string》的相應位置,以string.IsNullOrEmpty(str)形式判斷是否為空即可
/// </summary>
/// <param name="save_address">代表excel表格保存的地址,包括"文件名.xls"</param>
/// <param name="sheet_number">代表將要讀取的sheet表的索引位置</param>
/// <returns>返回 “不為空” 代表讀取成功,否則為讀取失敗;讀取數據list《string》代表一行數據,有多少個就代表有多行數據(所有行左對齊)</returns>
public static List<List<string>> rowReadAll(string save_address, int sheet_number)//讀取excel表格相應工作表的所有數據
{
List<List<string>> data = null;
//如果傳入參數合法
if (!string.IsNullOrEmpty(save_address) && sheet_number > 0){
int rowAllCnt = NpoiOperateExcel.rowORcolAllCount(save_address,sheet_number,true);
int colAllCnt = NpoiOperateExcel.rowORcolAllCount(save_address,sheet_number,false);
data = NpoiOperateExcel.rowReadSection(save_address, 1, rowAllCnt, 1, colAllCnt, sheet_number);
}
return data;
}
public static int rowORcolAllCount(string save_address, int sheet_number, Boolean readFlag)//讀取excel表格相應工作表的所有數據
{
int rowORcolCnt = -1;//初始化為-1
FileStream readfile = null;
try
{
//如果傳入參數合法
if (!string.IsNullOrEmpty(save_address) && 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)
{
if (readFlag)//如果需要讀取‘有效行數’
{
rowORcolCnt = sheet.LastRowNum+1;//有效行數(NPOI讀取的有效行數不包括列頭,所以需要加1)
}
else
{ //如果需要讀取‘最大有效列數’
for (int rowCnt = sheet.FirstRowNum; rowCnt <= sheet.LastRowNum; rowCnt++)//迭代所有行
{
IRow row = sheet.GetRow(rowCnt);
if (row != null && row.LastCellNum > rowORcolCnt)
{
rowORcolCnt = row.LastCellNum;
}
}
}
}
}
}
catch (Exception)
{
Console.WriteLine("NpoiOperateExcel.rowOrColumnAllCount方法產生了異常!");
}
finally
{
if (readfile != null) { readfile.Close(); }
}
return rowORcolCnt;
}
public static List<List<string>> rowReadSection(string save_address, int start_row, int stop_row,
int sart_column, int stop_column, int sheet_number)//讀取excel表格相應工作表的部分數據
{
List<List<string>> 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 rowIndex = start_row - 1; rowIndex < stop_row; rowIndex++)
{
IRow row = sheet.GetRow(rowIndex);
if (row != null)
{
List<string> oneRow = new List<string>();
for (int columnIndex = sart_column - 1; columnIndex < stop_column; columnIndex++)
{
ICell cell = row.GetCell(columnIndex);
if (cell != null)
{
oneRow.Add(cell.StringCellValue);
}
else {
oneRow.Add("");//填充空的數據
}
}
if (data == null)
{
data = new List<List<string>>();//初始化
}
data.Add(oneRow);
}
else {
List<string> oneRow = new List<string>();//軟件為相應位置空行創建內存中的空數據行
for (int columnIndex = sart_column - 1; columnIndex < stop_column; columnIndex++)
{
oneRow.Add("");//填充空的數據
}
if (data == null)
{
data = new List<List<string>>();//初始化
}
data.Add(oneRow);
}
}
}
}
}
catch (Exception)
{
Console.WriteLine("NpoiOperateExcel.rowReadSection方法產生了異常!");
}
finally
{
if (readfile != null) { readfile.Close(); }
}
return data;
}
}
}
內容所有權屬于:北京繼豪電子(專業研究體質測試儀器)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。