Re: [問題] List<T>相關問題
※ 引述《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();
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.77.9.28
※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1401160643.A.76C.html
→
05/27 19:53, , 1F
05/27 19:53, 1F
→
05/27 21:31, , 2F
05/27 21:31, 2F
→
05/28 11:28, , 3F
05/28 11:28, 3F
→
05/28 11:29, , 4F
05/28 11:29, 4F
→
05/28 11:40, , 5F
05/28 11:40, 5F
→
05/28 11:44, , 6F
05/28 11:44, 6F
→
05/29 00:03, , 7F
05/29 00:03, 7F
→
05/29 00:03, , 8F
05/29 00:03, 8F
→
05/29 11:01, , 9F
05/29 11:01, 9F
討論串 (同標題文章)