|
分類:[C#]
セルが結合されているときの繰り返し処理について
セルが結合されている場合の最初と最後の値を取得する繰り返し処理について
教えてください。
環境:
VS2010
closedXML
エクセルの予定表があります。
月の日数:
B1のセルからAF1まで1から31の数値で日程を入力します。
状態区分:
B3のセルからAF3まで状態区分を入力します。
「◎」は開始
「〇」は期間中
「●」は終了
氏名:
B4のセルからAF4まで氏名を入力します。
氏名のセルは状態の区分でセルを結合して入力します。
例えば、
B3が「◎」、C3からI3まで「〇」J3が「●」のとき
B4からJ4までセルを結合して氏名を入力します。
コメント:
B5のセルからAF5までコメントを入力します。
3行ごとに状態、氏名とコメントはB74まで同じ構成で作成していきます。
処理:
1.最初のB3から氏名が空白かどうか判定
2.空白でなければ、
最初のセルの区分と最後のセルの区分を取得して、配列にセット
分からないこと:
1.セルが結合されていた時の最初と最後のセルの値の取得方法
2.セルが結合されてないときの判定
B C D E F G H I J K
1 2 3 4 5 6 7 8 9 10
〇 〇 ● ◎● ◎ 〇 〇 ●
testA testB testC
やりたいこと:
//配列(氏名、開始日、終了日)
data_inp[0, 0] = testA
data_inp[0, 1] = ""
data_inp[0, 2] = 2018/7/3
data_inp[1, 0] = testB
data_inp[1, 1] = 2018/7/4
data_inp[1, 2] = 2018/7/5
data_inp[2, 0] = testC
data_inp[2, 1] = 2018/7/7
data_inp[2, 2] = 2018/7/10
注意点:
セルの最初が「◎」以外だと、開始日は空白
セルの最後が「●」以外だと、終了日は空白
string[,] data_inp = new string[1000, 5];
string tmp_name = ""; //氏名
//氏名データ行(始行4行目から終行73行目まで)
for (int srcRow = Start_Line; srcRow < End_Line; srcRow +=3)
{
//月末までループ(1日から月末日まで)
for (int X = date_start_column; X < dayc + date_start_column; X++)
{
//氏名行セル取り込み
Cell = worksheet.Cell(srcRow, X).Value.ToString();
if (Cell != "")
{
//結合がない場合の判定
//結合された最初のセルの判定(〇か◎)
//結合された最後のセルの判定(〇か●)
//結合された最初のセルと最後のセルの値をセット
data_inp[DataCount, 0] = tmp_name; //氏名
data_inp[DataCount, 1] = strdate; //開始日
data_inp[DataCount, 2] = endDate; //終了日
DataCount++;
}
}
}
|