這篇文章主要介紹“excel怎么逐列讀取所有數(shù)據(jù)”,在日常操作中,相信很多人在excel怎么逐列讀取所有數(shù)據(jù)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”excel怎么逐列讀取所有數(shù)據(jù)”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯(lián)建站主要從事網(wǎng)站建設、成都網(wǎng)站制作、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務鄧州,10多年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575using 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文件的某一個工作表有效范圍內(nèi)的全部內(nèi)容,如果某個單元格中無內(nèi)容,則將以空字符串形式填寫到List《string》的相應位置,以string.IsNullOrEmpty(str)形式判斷是否為空即可
///
/// 代表excel表格保存的地址,包括"文件名.xls"
/// 代表將要讀取的sheet表的索引位置
///
public static List> colReadAll(string save_address, int sheet_number)//讀取excel表格相應工作表的所有數(shù)據(jù)
{
List> data = null;
//如果傳入?yún)?shù)合法
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.colReadSection(save_address, 1, rowAllCnt, 1, colAllCnt, sheet_number);
}
return data;
}
public static int rowORcolAllCount(string save_address, int sheet_number, Boolean readFlag)//讀取excel表格相應工作表的所有數(shù)據(jù)
{
int rowORcolCnt = -1;//初始化為-1
FileStream readfile = null;
try
{
//如果傳入?yún)?shù)合法
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)//如果需要讀取‘有效行數(shù)’
{
rowORcolCnt = sheet.LastRowNum+1;//有效行數(shù)(NPOI讀取的有效行數(shù)不包括列頭,所以需要加1)
}
else
{ //如果需要讀取‘大有效列數(shù)’
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方法產(chǎn)生了異常!");
}
finally
{
if (readfile != null) { readfile.Close(); }
}
return rowORcolCnt;
}
public static List> colReadSection(string save_address, int start_row, int stop_row,
int sart_column, int stop_column, int sheet_number)//讀取excel表格相應工作表的部分數(shù)據(jù)
{
List> data = null;//初始化為空
FileStream readfile = null;
try
{
//如果傳入?yún)?shù)合法
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
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("");//填充空的數(shù)據(jù)
}
}
else {
oneCol.Add("");//填充空的數(shù)據(jù)
}
}
if (data == null)
{
data = new List>();//初始化
}
data.Add(oneCol);
}
}
}
}
catch (Exception)
{
Console.WriteLine("NpoiOperateExcel.colReadSection方法產(chǎn)生了異常!");
}
finally
{
if (readfile != null) { readfile.Close(); }
}
return data;
}
}
}
到此,關于“excel怎么逐列讀取所有數(shù)據(jù)”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。