雑談でコーディング基準について。
PG開発会社毎でそれぞれコーディング基準があって、
まったく異なる(時には真逆)の基準だったりする。
オイラ的にはVB.NETの場合
IF A=B THEN C=1
ってのはちょっと気持ち悪くて
IF A=B THEN
C=1
END IF
としたい所なんだけど、1行に書かないとNGになる基準もあるらしい。
確かに行数は増えるけどさ、修正しやすは後者だと思うんだよね。
まぁ昔のBASICだともっと省略してたけどw
まぁ元受けの基準に従うしかないのだけど、ちょっと愚痴ってみたw
IT技術関連は.NETネタが主流のカキコになると思われます^_^;
まあヘッポコなので嘘の情報がまぎれているかも知れません。
ソースの流用はご自由に。ただし責任は取りません。
肥大型心筋症の為ICDを埋め込んでます。
諸々の雑談、巡った神社もUP
更新日付
最新投稿:素戔嗚神社(藤戸)
投稿日:2024年11月28日
既存投稿更新:高岡神社
更新日:2024年10月6日
投稿日:2024年11月28日
既存投稿更新:高岡神社
更新日:2024年10月6日
2019年6月18日火曜日
2019年2月13日水曜日
C#からEXCEL読込(一括)
もう1年以上更新してなかったw
久しぶりに小ネタを。
アプリからEXCELファイルを読み込むってのは業務アプリ開発で
ありがちな依頼だったりする。
で、オイラもそんなC#開発依頼を受けて。
まず、参照設定にMicrosoft.Office.Interop.Excelを追加
(サードパーティ使用不可だからw)
以下、データ取得のソース
-----------------------------------------------------------------------------------------
// データ格納エリア
object[,] RangeDatas = null;
Microsoft.Office.Interop.Excel.Application Exl = null;
Microsoft.Office.Interop.Excel.Workbooks xlsBooks = null;
Microsoft.Office.Interop.Excel.Workbook xlsBook = null;
Microsoft.Office.Interop.Excel.Sheets xlsSheets = null;
Microsoft.Office.Interop.Excel.Worksheet xlsSheet = null;
Microsoft.Office.Interop.Excel.Range xlsRange = null;
Microsoft.Office.Interop.Excel.Workbooks xlsBooks = null;
Microsoft.Office.Interop.Excel.Workbook xlsBook = null;
Microsoft.Office.Interop.Excel.Sheets xlsSheets = null;
Microsoft.Office.Interop.Excel.Worksheet xlsSheet = null;
Microsoft.Office.Interop.Excel.Range xlsRange = null;
try
{
// EXCEL起動
Exl = new Microsoft.Office.Interop.Excel.Application
{
DisplayAlerts = false
};
try
{
// Books指定
xlsBooks = Exl.Workbooks;
try
{
// Book読込
xlsBook = xlsBooks.Open(FILENAME);
try
{
//EXCEL Sheets
xlsSheets = xlsBook.Sheets;
try
{
//EXCEL Sheet(1シート目)
xlsSheet = xlsSheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
try
{
//使用セル
xlsRange = xlsSheet.UsedRange;
RangeDatas = xlsRange.Value;
}
catch { }
finally
{
if (xlsRange != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsRange);
}
xlsRange = null;
}
}
catch { }
finally
{
if (xlsSheet != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsSheet);
}
xlsSheet = null;
}
}
catch { }
finally
{
if (xlsSheets != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsSheets);
}
xlsSheets = null;
}
}
catch { }
finally
{
if (xlsBook != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsBook);
}
xlsBook = null;
}
}
catch { }
finally
{
if (xlsBooks != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsBooks);
}
xlsBooks = null;
}
}
catch { }
finally
{
if (Exl != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(Exl);
}
Exl = null;
}
{
// EXCEL起動
Exl = new Microsoft.Office.Interop.Excel.Application
{
DisplayAlerts = false
};
try
{
// Books指定
xlsBooks = Exl.Workbooks;
try
{
// Book読込
xlsBook = xlsBooks.Open(FILENAME);
try
{
//EXCEL Sheets
xlsSheets = xlsBook.Sheets;
try
{
//EXCEL Sheet(1シート目)
xlsSheet = xlsSheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
try
{
//使用セル
xlsRange = xlsSheet.UsedRange;
RangeDatas = xlsRange.Value;
}
catch { }
finally
{
if (xlsRange != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsRange);
}
xlsRange = null;
}
}
catch { }
finally
{
if (xlsSheet != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsSheet);
}
xlsSheet = null;
}
}
catch { }
finally
{
if (xlsSheets != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsSheets);
}
xlsSheets = null;
}
}
catch { }
finally
{
if (xlsBook != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsBook);
}
xlsBook = null;
}
}
catch { }
finally
{
if (xlsBooks != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsBooks);
}
xlsBooks = null;
}
}
catch { }
finally
{
if (Exl != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(Exl);
}
Exl = null;
}
-----------------------------------------------------------------------------------------
使用したオブジェクトを明示的に開放してやらないと駄目なんで
めんどくさいけど仕方ない。
これでRangeDatasにEXCELセルのデータが入るのだけど・・・・
日付データとかは日付型で入るわけでもない。
EXCELに表示されている値を取り込みたいとなると
ループで各セルを回して.Textを取得する必要があるみたい。
(一括で取得する方法があれば良いけど・・・・)
登録:
投稿 (Atom)