2

.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);
        }
    }
}
4

1 に答える 1