0

[解決済み]デバッグ時にこのエラーに直面すると、エラーは次のようになります。

このデータ ソースの行 0 にある GetColumnNumber(Name) のデータ フィールドを解釈またはアクセスしようとしてエラーが発生しました

データマーカー <%%=Production.ProductID> のこのフィールド名またはインデックスにアクセスできません

解決策: %%=Production.ProductID から %%=$Production に置き換えられたデータマーカー

[更新] @AlisonB は、このエラーに関して再び大きな助けになりました。これでデバッグできますが、次のような別のエラーが表示されます。

すべてのデータソースは一意である必要があります。名前 'Production' およびワークシート" は、データ ソースに既に使用されています。

リーダーまたは IdSQL のほかに、XLT.BindCellData() に入れる名前をどのように使用すればよいですか? リーダーを使用すると、このエラーが発生するためです。IdSQL についても同様です。ただし、while ステートメントを削除するとデバッグできますが、Excel ファイルは実際のデータではなく、すべてのセルで System.Data.SqlClient.SqlDataReader として表示されます。

    static void Main(string[] args)
    {
        ExcelTemplate XLT = new ExcelTemplate();
        XLT.Open(@"C:\Users\administrator.EBSDLAB\Desktop\Examples\Test_DB\test.xlsx");
        DataBindingProperties dataProps = XLT.CreateDataBindingProperties();

        var strCon = ConfigurationManager.ConnectionStrings["Production"].ConnectionString;
        SqlConnection sqlCon = new SqlConnection(strCon);

        string IdSQL = "SELECT Name, Size, Color FROM Production.Product";
        sqlCon.Open();

        SqlCommand cmd = new SqlCommand(IdSQL, sqlCon);
        SqlDataReader reader = cmd.ExecuteReader();

        while(reader.Read())
        {
            XLT.BindCellData(IdSQL, "Production", dataProps);
        }

        XLT.BindCellData(reader, "Production", dataProps);
        XLT.Process();
        XLT.Save(@"C:\Users\administrator.EBSDLAB\Desktop\Examples\Test_DB\products.xlsx");
    }
4

1 に答える 1