因為之前的問題有點太長,讓大家搞錯我的方向,這次有給素材,直接用就可以了,我也想了很久,卡在很多地方,也有參考其他人的,還是失敗了。
先放素材
https://drive.google.com/file/d/1Dy6G4vYN3gdiOFMHqyGJcDkd1o-jI6cv/view?usp=sharing
然後我也稍微解釋一下。
這是我拿到的檔案的範例(自己製作的範例),沒有值的都會是空格(並不是我故意空的)。所以只要是NULL傳到LIST都會出現錯誤。
第一張圖與第二張圖合併成第三張圖,需要甚麼的欄位我都有做標記了,第三張圖下方有做註解。
第二個表原檔是合併儲存格,素材都是完好的。
第一張與第二張都是不同的檔案(非worksheet),算是要拉需要的欄位出來,做成第三個Excel檔案。
只是是以第二張的黃色P/N為標準。
另外三個的標題都是不同。
共通點一樣是黃色。比較要注意的地方是紅色,他是兩張表的那個欄位做相加
剩下的只要黃色名稱重複,都直接合併相加。
可以的話,可以給我比較簡單的方法來做嗎?看了很多人的方式,我都不知道他們怎麼指定要哪個欄位,然後放到哪個欄位。
另一個問題是,NULL要怎麼解決
大部分回答的都叫我用下面這種方式(之前的程式碼,其中一個LIST)
var dataOrigin = new List<DataOrigin>();
for(int r = 1; r <= totalRows; r++ )
{
dataOrigin.Add(new DataOrigin
{ item = sh.Cells[r, 1].Value.ToString(),
Apr = sh.Cells[r, 2].Value.ToString(),
May = sh.Cells[r, 3].Value.ToString(),
Jun = sh.Cells[r, 4].Value.ToString()
});
}
可是這個只要遇到空格就會回傳NULL我就沒辦法使用,也找不出如何解決NULL。
我也有用過japhenchen大大的程式碼,可是改成我想要的就失敗了(給的問題沒有給得很清楚,想說自己改應該可以)。
item = sh.Cells[r, 1].Value == NULL ? "" : sh.Cells[r, 1].Value.ToString().ToString()
這樣子呢?
如果等於NULL,可以回傳0嗎? 因為我已經改成
for (int r = 3; r <= totalColums; r++)
{
list1.Add(new User
{
project = sh1.Cells[r, 1].Value?.ToString(),
part = sh1.Cells[r, 2].Value?.ToString(),
im = sh1.Cells[r, 3].Value?.ToString(),
VM = sh1.Cells[r, 4].Value?.ToString()
});
}
可是我用 Group 要將它加起來,有NULL會出現錯誤
改成您的變這樣