SKKYJE 2024-03-23 04:52 采纳率: 25%
浏览 234
已结题

使用C#调用Bartender打印表格

使用C#调用Bartender打印出现的问题

img

上图我在BarTenDer里面创建了一个A4纸大小的模板,里面主要是一个表格。
我的问题是,我用sql从数据库查询出了一些数据,类型为datatable,我该怎么做才能将这个datatable的数据直接用BarTenDer打印到A4纸上,我并没有找到BarTenDer可以直接将模板中表格的数据源设置为我的datatable的方法。
我现在只能在BarTenDer模板的每一个单元格中放一个文本标签,然后在后台调用SDK直接给每一个单元格的文本标签赋值,这样太麻烦了

  • 写回答

19条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-23 08:33
    关注
    获得0.90元问题酬金

    引自免费微信小程序:皆我百晓生

    要实现通过C#调用BarTender并将其与SQL查询结果(DataTable类型)结合,在A4纸模板上打印表格,可以采用Seagull Scientific提供的BarTender .NET SDK(BarTender.Interop.BarTender110.dll)。下面是一种可能的解决方案:

    首先确保已经安装了BarTender,并且已获取其.NET SDK引用。以下是大致步骤:

    1. 创建一个新的BarTender文档或加载已有的模板文件(Warehousereceipt.btw)。
    using BarTender;
    
    // 加载已存在的模板
    var application = new BarTender.ApplicationClass();
    var document = application.Documents.Open("Warehousereceipt.btw");
    
    1. 将SQL查询得到的DataTable转换为BarTender可以处理的数据格式,例如BTDataSet。
    // 假设dt是你从数据库获取的DataTable
    var btDataSet = new BTDataSet();
    foreach (DataRow row in dt.Rows)
    {
        var btRow = btDataSet.NewRow();
        foreach (DataColumn column in dt.Columns)
        {
            btRow[column.ColumnName] = row[column].ToString();
        }
        btDataSet.AddRow(btRow);
    }
    
    1. 在BarTender模板中,你需要预先设置好可变数据区域(通常使用“网格”控件或类似功能),使其能根据数据源自动填充表格。

    2. 将数据绑定到模板中的表格数据源。

    // 获取模板中的可变数据容器(例如表格)
    var gridObject = document.FormulaObjects["YourGridObjectName"] as BTRowColObject;
    gridObject.DataSourceType = RowColDataSourceTypeEnum.BTDataRowColDataSource;
    gridObject.DataSource = btDataSet;
    
    1. 最后,设置打印机并执行打印任务。
    // 设置打印机
    var printerName = "YourPrinterName";
    var printDocument = document.PrinterPrintDocuments[printerName];
    printDocument.PrintFileName = "Warehousereceipt.pdf"; // 如果你想输出PDF文件而不是直接打印
    
    // 执行打印
    document.Print(printDocument);
    
    // 关闭模板和应用程序
    document.Close(false);
    application.Quit();
    

    注意:上述代码仅为示例,实际应用时需要根据具体的BarTender版本、模板结构以及数据绑定方式做相应调整。另外,确保在项目中正确引用BarTender的Interop库,并且理解每个方法的具体含义及用法。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 创建了问题 3月23日