Excelワークブックに新しいワークシートを追加しようとしていて、これをC#Excel Interopの最後のワークシートにします。Excel Interop - 他のすべての後に新しいワークシートを追加
それは本当に簡単そうですが、私は以下のコードは、それを行うだろうと思った:
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx");
workbook.Sheets.Add(After: workbook.Sheets.Count);
workbook.Save();
workbook.Close();
Marshal.ReleaseComObject(excel);
}
}
}
はありません、このような運。私が試してみて、最初のシートを追加し、それは私が試した移動が示唆されたMicrosoft.comのthis pageを見つけ
COMException was unhandled - Exception from HRESULT: 0x800A03EC
、以下に示すように、その:私は、この便利なエラーが発生します。私は、このWebページは、エクセル95を対象とすることを知っているが、VBAはので、私はそれがまだ働くだろう期待していた使用することがまだそこにある:
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(@"C:\test\Test.xlsx");
workbook.Sheets.Add();
workbook.Sheets.Move(After: workbook.Sheets.Count);
workbook.Save();
workbook.Close();
Marshal.ReleaseComObject(excel);
}
}
}
私は上記と同じエラーを取得します。私はAdd
とMove
の両方の方法で、After
パラメータの文字列として最後のワークシートの名前を渡してみました。
これは私が試したことですので、私の質問は、Excelワークブックにワークシートを追加し、これをC#Excel Interopを使用してブックの最後のシートにする方法です。
おかげで、ここでのドキュメントhttp://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.move(v=vs.80).aspx見れ
JMK - ありませんあなたの問題への答えですが、おそらくC#とExcelの役に立つポインタです。私はLinqToExcelライブラリをかなりの時間使用していますが、実際にはinteropメソドロジを使用してどのくらいクリーンな経験であるかを表現することはできません。時間がある場合は、それを見て、それがあなたの要求に合っているかどうかを見てください。 https://github.com/paulyoder/LinqToExcel http://code.google.com/p/linqtoexcel/ –
@jimtollanヘッドアップいただきありがとうございます、私はLinqToExcelをチェックアウトのポイントを作るでしょう、それはよさそうです。ありがとう! – JMK