.NET 3.5 を対象とする場合に正常に動作する次のコードがあります。
Microsoft.Office.Interop.Excel.Application _excelInstance;
Microsoft.Office.Interop.Excel.Worksheet _excelWorksheet;
Microsoft.Office.Interop.Excel.Workbook _excelWorkbook;
_excelInstance = new Microsoft.Office.Interop.Excel.Application();
_excelWorkbook = _excelInstance.Workbooks.Add();
_excelWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)_excelWorkbook.Worksheets.get_Item(1);
ただし、.NET 4.5 をターゲットにすると、コンパイラは上記の最後の行に対して次のエラーを表示します。
動的式のコンパイルに必要な 1 つ以上の型が見つかりません。参照がありませんか?
このプロジェクトで .NET 3.5 をターゲットにすることができません。4.0 または 4.5 である必要があります。
これを引き起こしている原因、またはこれを修正するにはどうすればよいですか?
ありがとう。
編集 -
クラス全体は次のとおりです。
public class ExcelWriter : IDisposable
{
private string _outputFile;
public ExcelWriter(string outputFile)
{
_outputFile = outputFile;
}
public void Write(List<string[]> data)
{
Microsoft.Office.Interop.Excel.Application _excelInstance;
Microsoft.Office.Interop.Excel.Worksheet _excelWorksheet;
Microsoft.Office.Interop.Excel.Workbook _excelWorkbook;
_excelInstance = new Microsoft.Office.Interop.Excel.Application();
_excelWorkbook = _excelInstance.Workbooks.Add();
_excelWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)_excelWorkbook.Worksheets.get_Item(1);
int rowNumber = 1;
foreach (var row in data)
{
int columnNumber = 1;
foreach (var field in row)
{
_excelWorksheet.Cells[rowNumber, columnNumber] = field;
columnNumber++;
}
rowNumber++;
}
if (File.Exists(_outputFile))
{
File.Delete(_outputFile);
}
_excelWorkbook.SaveAs(_outputFile);
_excelWorkbook.Close();
_excelInstance.Quit();
}
public void Dispose()
{
if (File.Exists(_outputFile))
{
File.Delete(_outputFile);
}
}
}