Re: [问题] List<T>相关问题

楼主: doom0819 (哉一)   2014-05-27 11:17:20
※ 引述《doom0819 (哉一)》之铭言:
: 1: List<T>是否可以像阵列用ref传进method,或是有其他方法可以传整个List<T>进去?
: 2:我用NPOI读取Excel档时,若是遇到空的Cell时,如果加上strcell=hr.GetCell(i)==null?"0":hr.GetCell(i).ToString();就可以克服NPOI将该格视为null的情况,但若用List的.Add方法来宣告大小并读取时,就会遇到读不到空的格子的问题,所以也不会新增大小吧。
: 我有查过MSDN了,但我目前好像没有办法解决,烦请版上高人解惑。麻烦了,感恩。
要贴程式码,所以用回文的方式,请见谅
我原本用阵列来存放Excel读进来的Cells,但后来考虑避免预先宣告阵列大小而导致超用,所以改用List<T>来存放。
在NPOI的方法里面,如果是用阵列来存,如果加上“strcell = hr.GetCell(i) == null ? "0" : hr.GetCell(i).ToString();”这行,就可避免原本Cells没有输入资料被辨别为null的情况,但如果改用List<T>的.add方法来改变阵列大小的时候,就会因为Cells里面没有资料,而不会新增,不知道这样的问题有没有可以解决的办法,麻烦指教了。感恩!
----------------
原本的可以work的程式码如下,如果把ARRAY[j]=strcell这一行改写成ARRAY.add(strcell);,就会受到Cell本身有没有存资料影响,如果没有存资料,就不会宣告。
string strFilePath = string.Format("C:\\Users\\apple\\Dropbox\\gdbus_data\\work_hour.xlsx");
XSSFWorkbook wk;
FileStream fs = new FileStream(strFilePath, FileMode.Open, FileAccess.ReadWrite);
wk = new XSSFWorkbook(fs);
XSSFSheet hst;
XSSFRow hr;
string strcell;
for (int k = 0; k < 1; k++) //共有1个sheet
{
hst = (XSSFSheet)wk.GetSheetAt(k);
string strSheetname = hst.SheetName; //Get Sheet Name
for (int j = 1; j <= hst.LastRowNum; j++) //row
{
hr = (XSSFRow)hst.GetRow(j);
for (int i = 0; i < hr.LastCellNum; i++) //column
{
//避免资料格空掉
strcell = hr.GetCell(i) == null ? "0" : hr.GetCell(i).ToString();
if (i == 0)
{
ARRAY[j] = strcell;
}
}
row_count = j;
}
fs.Close();
}
作者: Litfal (Litfal)   2014-05-27 19:53:00
你只判断每列的第一格?(i == 0)?
楼主: doom0819 (哉一)   2014-05-27 21:31:00
没有,有读很多格,但怕占篇幅所以删减,读到i==7
作者: ssccg (23)   2014-05-28 11:28:00
首先strcell已经保证有值了不是吗? cell本身有没有资料有差?再来List.add可以加null值,跟有没有资料没关系你是从哪边得到List.add没有新增资料的最后"宣告"这个字不是这样用的...
楼主: doom0819 (哉一)   2014-05-29 00:03:00
我在if里面用msgbox印计数器的值发现的。我太菜了,可能用错讲法,sorry><
作者: ssccg (23)   2014-05-29 11:01:00
计数器? List.Count? 同时array和list两个都放,比较一下?

Links booklink

Contact Us: admin [ a t ] ucptt.com