首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >{更新} OfficeWriter错误:数据源绑定名称必须是唯一的

{更新} OfficeWriter错误:数据源绑定名称必须是唯一的
EN

Stack Overflow用户
提问于 2013-07-03 07:53:52
回答 1查看 306关注 0票数 0

解决了在调试时遇到的错误,错误如下:

试图解释或访问此数据源第0行中的GetColumnNumber(名称)数据字段时出错 无法为数据标记程序<%%=Production.ProductID>访问此字段名或索引。 解决方案:将数据标记从%%=Production.ProductID替换为%%=$Production

更新的 @AlisonB再次帮助解决了错误。现在可以调试它,但它显示了另一个错误,如下所示:

所有的数据源都必须是唯一的。“生产”和“工作表”的名称已经用于数据源。

我将如何使用名称在XLT.BindCellData()中,在读取器或IdSQL旁边?因为如果我使用读取器,我就会有这个错误。IdSQL也是如此。但是,如果删除while语句,它可以进行调试,但excel文件将在所有单元格中显示为System.Data.SqlClient.SqlDataReader,而不是实际数据。

代码语言:javascript
复制
    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");
    }
EN

回答 1

Stack Overflow用户

发布于 2013-07-03 11:40:40

模板文件中的语法与在代码中进行的数据绑定调用不兼容。

BindCellData的目的是将单个变量值绑定到单元格。BindCellData的参数是一个对象(它是要导入的单个值)、一个字符串(它是数据标记的名称)和一个DataBindingProperties对象,用于定制您想要导入的数据的方式。

此方法调用的对应数据标记语法是%%=$DataMarkerName,其中"DataMarkerName“是传递给BindCellData的值。要与您发布的代码匹配,您的数据标记应该是:

代码语言:javascript
复制
ProductID: %%=$Production

您还可以更改正在进行的方法调用,以匹配模板中数据标记的排列;在本例中,您需要的方法调用是BindRowData

BindRowData接受一行值并将它们导入到数据标记中,而不管数据标记是在同一行中还是在模板文件中的其他配置中。数据源中的每一列数据都需要一个数据标记,您已经这样做了。

有关数据标记语法的更多信息,请参见我们关于创建数据标记的文档。如果您有兴趣的话,我们也有关于使用数组作为ExcelTemplate中的数据源导入数据库信息的指南。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17442566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档