[解決済み]デバッグ時にこのエラーに直面すると、エラーは次のようになります。
このデータ ソースの行 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");
}