解决了在调试时遇到的错误,错误如下:
试图解释或访问此数据源第0行中的GetColumnNumber(名称)数据字段时出错 无法为数据标记程序<%%=Production.ProductID>访问此字段名或索引。 解决方案:将数据标记从%%=Production.ProductID替换为%%=$Production
更新的 @AlisonB再次帮助解决了错误。现在可以调试它,但它显示了另一个错误,如下所示:
所有的数据源都必须是唯一的。“生产”和“工作表”的名称已经用于数据源。
我将如何使用名称在XLT.BindCellData()中,在读取器或IdSQL旁边?因为如果我使用读取器,我就会有这个错误。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");
}发布于 2013-07-03 11:40:40
模板文件中的语法与在代码中进行的数据绑定调用不兼容。
BindCellData的目的是将单个变量值绑定到单元格。BindCellData的参数是一个对象(它是要导入的单个值)、一个字符串(它是数据标记的名称)和一个DataBindingProperties对象,用于定制您想要导入的数据的方式。
此方法调用的对应数据标记语法是%%=$DataMarkerName,其中"DataMarkerName“是传递给BindCellData的值。要与您发布的代码匹配,您的数据标记应该是:
ProductID: %%=$Production您还可以更改正在进行的方法调用,以匹配模板中数据标记的排列;在本例中,您需要的方法调用是BindRowData。
BindRowData接受一行值并将它们导入到数据标记中,而不管数据标记是在同一行中还是在模板文件中的其他配置中。数据源中的每一列数据都需要一个数据标记,您已经这样做了。
有关数据标记语法的更多信息,请参见我们关于创建数据标记的文档。如果您有兴趣的话,我们也有关于使用数组作为ExcelTemplate中的数据源和导入数据库信息的指南。
https://stackoverflow.com/questions/17442566
复制相似问题