0

次のコードを試していますが、例外があります:

結合セルの一部を変更することはできません。

この行で例外がスローされました。

PortfolioSheet.get_Range("A1",missing).EntireColumn.Locked = false;

完全なコード:

Microsoft.Office.Interop.Excel.Application ThisApplication = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook ThisWorkBook;

string _stFileName = Server.MapPath("/ExcelTemplate/EFIRM_Facility_Template.xlsm");
object missing = System.Reflection.Missing.Value;

ThisWorkBook = ThisApplication.Workbooks.Open(_stFileName, missing, missing, 5, missing, missing, missing,
    missing, missing, missing, missing, missing, missing, missing, missing);


Microsoft.Office.Interop.Excel.Worksheet PortfolioSheet = (Microsoft.Office.Interop.Excel.Worksheet)ThisWorkBook.Sheets[1]; //fill portfoliosheet
//PortfolioSheet.get_Range("A1" + dtDynamicForPortfolio.Rows.Count + "").Locked = false;
/* This line */
PortfolioSheet.get_Range("A1",missing).EntireColumn.Locked = false;
PortfolioSheet.get_Range("B1", "H1"+dtDynamicForPortfolio.Rows.Count).Locked = false;
int iCol = 1;
int iRow = 0;

foreach (DataRow r in dtDynamicForPortfolio.Rows)
{
    iRow++;
    iCol = 0;

    foreach (DataColumn c in dtDynamicForPortfolio.Columns)
    {
        iCol++;

        PortfolioSheet.Cells[iRow + 1, iCol] = Convert.ToString(r[c.ColumnName]);
    //  ThisSheet.get_Range("A1", "C3").Locked = true;
    }
}

PortfolioSheet.get_Range("A1", missing).EntireColumn.Locked = true;
PortfolioSheet.get_Range("B1", "H1").Locked = true;

どうすればこれを回避できますか?

4

1 に答える 1

0

編集している Excel の一部の行に結合されたセルがあります。Excel.Interop では、特定の列/行にそれらがある場合、列全体/行全体を変更することはできません。結合されたセルがない特定の範囲を指定する必要があります。

結合されたセルは、複数の列/行がグループ化されて、Excel で単一のセルとして機能するようなものです。

于 2013-06-24T13:48:28.773 に答える