EPPlusにメソッドがあったのでそっちを使ったほうがらくちんです。
OfficeOpenXml.ExcelAddress.GetAddress
タイトルそのまま、行番号、列番号を引数に渡してExcelのアドレス("A1"とか)に変換する処理。
そのまんまの処理なので特に開設はなしで。
コードをまとめるためにメソッド内でDictionaryのオブジェクトを作っていますが、使うときはいい感じのところで定義してください。
////// 行列番号をExcelのアドレス文字列に変換 /// /// 行番号 /// 列番号 ///public static string ConvertExcelAddressString(int row, int col) { Dictionary DicInt2Alphabet = new Dictionary () { { 1, "A" }, { 2, "B" }, { 3, "C" }, { 4, "D" }, { 5, "E" }, { 6, "F" }, { 7, "G" }, { 8, "H" }, { 9, "I" }, { 10, "J" }, { 11, "K" }, { 12, "L" }, { 13, "M" }, { 14, "N" }, { 15, "O" }, { 16, "P" }, { 17, "Q" }, { 18, "R" }, { 19, "S" }, { 20, "T" }, { 21, "U" }, { 22, "V" }, { 23, "W" }, { 24, "X" }, { 25, "Y" }, { 26, "Z" }, }; string address = ""; int colTmp = col; //列番号がアルファベットの数よりも大きい場合(変換後AA以上となる場合) 2桁目の文字列を先に算出 if(colTmp > DicInt2Alphabet.Count) { address = DicInt2Alphabet[col / DicInt2Alphabet.Count]; colTmp = colTmp % DicInt2Alphabet.Count; } //行列番号を変換 address += DicInt2Alphabet[colTmp] + row.ToString(); return address; }
0 件のコメント:
コメントを投稿