EXCEL出力(C#.NET)
2010年01月14日
Excelを起動してデータを出力(転送/保存)するサンプル(ソース/コード)です。引数はエクセルファイルPATH、シート番号、行番号、カラム番号、転送データ(2次元配列)で一気にデータを転送します。関連するサンプルはこちらです。
EXCEL操作(VB.NET) / EXCEL操作(C#.NET) / EXCEL出力(VB.NET)
EXCEL関係のその他のサンプルはこちら「EXCEL関係」でお探しください。
// -------------------------------------------------------
// Excelを起動してデータを出力するサンプル(C#.NET/VS2005)
// Excelを参照設定する必要があります
// [参照の追加],[COM],[Microsoft Excel *.* Object Library]
// using Excel = Microsoft.Office.Interop.Excel; (必要)
// using System.Runtime.InteropServices; (必要)
private void button1_Click(object sender, EventArgs e)
{
ExcelSendData(@"D:\Temp\Book1.xls",
2, 3, 4, new string[2, 3] {
{ "1A", "1B", "1C" },
{ "2A", "2B", "2C" } });
}
/// <summary>
/// Excel起動およびデータ転送
/// </summary>
/// <param name="xls">ExcelファイルPATH</param>
/// <param name="sht">シート番号(1から)</param>
/// <param name="row">行番号(1から65536)</param>
/// <param name="col">カラム番号(1から256)</param>
/// <param name="dat">転送データ(2次元配列)</param>
private void ExcelSendData(
String xls, int sht, int row, int col,
object[,] dat)
{
Excel.Application objExcel = null;
Excel.Workbooks objWorkBooks = null;
Excel.Workbook objWorkBook = null;
Excel.Worksheet objWorksheet = null;
// EXCEL起動
objExcel = new Excel.Application();
// エクセル非表示
objExcel.Visible = false;
objExcel.DisplayAlerts = false;
// ブック取得
objWorkBooks = objExcel.Workbooks;
objWorkBook = objWorkBooks.Open(xls,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
// アクティブシート設定
objWorksheet =
(Excel.Worksheet)objWorkBook.Sheets[sht];
((Excel._Worksheet)objWorksheet).Activate();
// エクセル表示
objExcel.WindowState =
Excel.XlWindowState.xlMaximized;
objExcel.DisplayAlerts = true;
objExcel.Visible = true;
// データコピー(出力)
objWorksheet.get_Range(
objWorksheet.Cells[row, col],
objWorksheet.Cells[
row + dat.GetLength(0) - 1,
col + dat.GetLength(1) - 1]).Value2 = dat;
// 保存した事にする
objWorkBook.Saved = true;
// EXCEL終了処理
if (objWorksheet != null)
{
// objWorksheetを解放
Marshal.ReleaseComObject(objWorksheet);
objWorksheet = null;
}
if (objWorkBook != null)
{
// objWorkBookを解放
Marshal.ReleaseComObject(objWorkBook);
objWorkBook = null;
}
if (objWorkBooks != null)
{
// objWorkBooksを解放
Marshal.ReleaseComObject(objWorkBooks);
objWorkBooks = null;
}
if (objExcel != null)
{
// EXCELを閉じる
//objExcel.Quit();
// objExcelを解放
Marshal.ReleaseComObject(objExcel);
objExcel = null;
}
// オブジェクトを確実に削除
System.GC.Collect();
}
// -------------------------------------------------------