iT邦幫忙

0

C# 中判斷條件 寫入EXCEL

  • 分享至 

  • xImage

各位大大不好意思
想請問ㄧ下
如下圖
https://ithelp.ithome.com.tw/upload/images/20201005/20121313KpT74wTj3B.png
原本資料庫中的資料是長這樣

但是現在用C#寫入EXCEL需要變成這樣(如下圖)
https://ithelp.ithome.com.tw/upload/images/20201005/20121313gWeDSgzAak.png
黃色的部分為插入空白欄位
我該如何下手,麻煩給點方向~謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
allenlwh
iT邦高手 1 級 ‧ 2020-10-05 11:27:11
最佳解答

判斷下一個NO,和目前的NO,是否相同。
如果不同時,就新增一空白列。

看更多先前的回應...收起先前的回應...
stanlywow iT邦新手 5 級 ‧ 2020-10-05 11:29:49 檢舉

我該怎麼抓取目前的NO與下一個NO的值?
需要再加一欄排序用排序放式抓NO嗎?

allenlwh iT邦高手 1 級 ‧ 2020-10-05 11:39:25 檢舉

貼Write到Excel的Code,來看一下

w4560000 iT邦研究生 5 級 ‧ 2020-10-05 11:40:11 檢舉

你用C# 寫入到Excel,是跑迴圈去寫入嗎?
這樣你本來就可以拿到NO,只是在迴圈中作判斷處理空白列就好

stanlywow iT邦新手 5 級 ‧ 2020-10-05 11:48:58 檢舉

allenlwh
int x = 0;
foreach (DataRow dr in dt.Rows)
{
x = x + 1 ;
string No = !String.IsNullOrEmpty(dr["No"].ToString()) ? dr["No"].ToString() : "";
string Name = !String.IsNullOrEmpty(dr["Name"].ToString()) ? dr["Name"].ToString() : "";

u_Sheet.GetRow(x).GetCell(0).SetCellValue(No);
u_Sheet.GetRow(x).GetCell(0).SetCellValue(Name);
}

我是用這方式寫入EXCEL

stanlywow iT邦新手 5 級 ‧ 2020-10-05 11:51:32 檢舉

w4560000
是的,我可以在上面貼的程式碼中取的所有No欄位與Name的數值,但是我卡著一個盲點是我不知道該怎麼取出目前的NO跟下一個NO去做比對

allenlwh iT邦高手 1 級 ‧ 2020-10-05 12:02:14 檢舉

那就換個方向,等取出來後再跟上一個做比較。

//預設oldNo,從1開始 Begin
string oldNo="1";
//預設oldNo,從1開始 End
{
x = x + 1 ;
string No = !String.IsNullOrEmpty(dr["No"].ToString()) ? dr["No"].ToString() : "";
string Name = !String.IsNullOrEmpty(dr["Name"].ToString()) ? dr["Name"].ToString() : "";

//當下一個No要SetCellValue之前,再來處理 Begin
if (oldNo !=No)
    {
        x = x + 1 ;
    }
//當下一個No要SetCellValue之前,再來處理 End

u_Sheet.GetRow(x).GetCell(0).SetCellValue(No);
u_Sheet.GetRow(x).GetCell(0).SetCellValue(Name);
oldNo=No;
}
stanlywow iT邦新手 5 級 ‧ 2020-10-05 14:18:47 檢舉

allenlwh
感謝大大給我方向,因為您的幫助我已經解決這問題了~感謝!!

stanlywow
記得給 allenlwh 最佳解答喔

stanlywow iT邦新手 5 級 ‧ 2020-10-06 15:38:25 檢舉

rainbowrain
選了!感謝提醒~

allenlwh iT邦高手 1 級 ‧ 2020-10-06 15:50:22 檢舉

我要發表回答

立即登入回答