C#からExcelを操作する
簡単なようで難しいので記述。
まずはVisual Studio上で「メニュー」→「プロジェクト」→「参照の追加」でCOMを選択し、【Microsoft Excel ○○.○ Object Library】(○は数字が入る)を追加しておく。
そうすると、Excel操作に必要なライブラリが使えるようになって、下記のサンプルソースが使用できるようになる。
参照を追加しておかないと、エラーでコンパイルできないから注意が必要です。
以下サンプル。
サンプルは、すでにあるシートを複製する処理。
private void sampleProc()
{
Excel.Application app = app = new Excel.Application();
Excel.Workbook workBook = null;
app.Visible = true;
// ワークブックの展開
workBook = (Excel.Workbook)(app.Workbooks.Open(
this.textBox2.Text,
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));
string sheetName = "sheet1";
// シートインデックス取得
int idx = getSheetIndex(sheetName, workBook.Sheets);
// シートの洗濯
Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Sheets[idx];
// シートのコピー
workSheet.Copy(workSheet, Type.Missing);
// 保存・終了
workBook.Close(true, Type.Missing, Type.Missing);
app.Quit();
}
private int getSheetIndex(string sheetName, Excel.Sheets shs)
{
int i = 0;
foreach (Excel.Worksheet sh in shs)
{
if (sheetName == sh.Name)
{
return i + 1;
}
i += 1;
}
return 0;
}
まずはVisual Studio上で「メニュー」→「プロジェクト」→「参照の追加」でCOMを選択し、【Microsoft Excel ○○.○ Object Library】(○は数字が入る)を追加しておく。
そうすると、Excel操作に必要なライブラリが使えるようになって、下記のサンプルソースが使用できるようになる。
参照を追加しておかないと、エラーでコンパイルできないから注意が必要です。
以下サンプル。
サンプルは、すでにあるシートを複製する処理。
private void sampleProc()
{
Excel.Application app = app = new Excel.Application();
Excel.Workbook workBook = null;
app.Visible = true;
// ワークブックの展開
workBook = (Excel.Workbook)(app.Workbooks.Open(
this.textBox2.Text,
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));
string sheetName = "sheet1";
// シートインデックス取得
int idx = getSheetIndex(sheetName, workBook.Sheets);
// シートの洗濯
Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Sheets[idx];
// シートのコピー
workSheet.Copy(workSheet, Type.Missing);
// 保存・終了
workBook.Close(true, Type.Missing, Type.Missing);
app.Quit();
}
private int getSheetIndex(string sheetName, Excel.Sheets shs)
{
int i = 0;
foreach (Excel.Worksheet sh in shs)
{
if (sheetName == sh.Name)
{
return i + 1;
}
i += 1;
}
return 0;
}