[SOLVED]调试时遇到此错误,错误如下:
尝试解释或访问此数据源第0行中GetColumnNumber(Name)的数据字段时出错
数据标记<%%无法访问此字段名或索引=Production.ProductID>
解决方案:数据标记从%%=Production.ProductID替换为%%=$Production
[更新] @AlisonB再次在这个错误上提供了很大的帮助。现在可以调试它,但它显示了另一个错误,如下所示:
所有数据源都必须是唯一的。名称"生产"和工作表";已用于数据源。
如何在reader或IdSQL旁边的XLT.BindCellData()中使用名称?因为如果我使用阅读器,我会出现这个错误。IdSQL也是如此。但如果我删除while语句,它可以调试,但excel文件将在所有单元格中显示为System.Data.SqlClient.SqlDataReader,而不是实际数据。
static void Main(string[] args)
{
ExcelTemplate XLT = new ExcelTemplate();
XLT.Open(@"C:Usersadministrator.EBSDLABDesktopExamplesTest_DBtest.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:Usersadministrator.EBSDLABDesktopExamplesTest_DBproducts.xlsx");
}
模板文件中的语法与代码中进行的数据绑定调用不兼容。
BindCellData旨在将单个变量值绑定到一个单元格。BindCellData的参数是一个对象,它是要导入的单个值,一个字符串(它是数据标记的名称),以及一个用于自定义数据导入方式的DataBindingProperties对象。
此方法调用的相应数据标记语法为%%=$DataMarkerName,其中"DataMarkerName"是传递给BindCellData的值。为了与您发布的代码相匹配,您的数据标记将是:
ProductID: %%=$Production
您还可以更改正在进行的方法调用,以匹配模板中数据标记的排列;在这种情况下,您需要的方法调用是BindRowData。
BindRowData获取一行值并将它们导入到数据标记中,无论数据标记是在同一行中还是在模板文件中的其他配置中。数据源中的每一列数据都需要一个数据标记,这一点您已经做到了。
有关数据标记语法的更多信息,请参阅我们关于创建数据标记的文档。如果您感兴趣,我们还有一份关于在ExcelTemplate中使用数组作为数据源和导入数据库信息的指南。