引自免费微信小程序:皆我百晓生
要实现通过C#调用BarTender并将其与SQL查询结果(DataTable类型)结合,在A4纸模板上打印表格,可以采用Seagull Scientific提供的BarTender .NET SDK(BarTender.Interop.BarTender110.dll)。下面是一种可能的解决方案:
首先确保已经安装了BarTender,并且已获取其.NET SDK引用。以下是大致步骤:
- 创建一个新的BarTender文档或加载已有的模板文件(Warehousereceipt.btw)。
using BarTender;
// 加载已存在的模板
var application = new BarTender.ApplicationClass();
var document = application.Documents.Open("Warehousereceipt.btw");
- 将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);
}
-
在BarTender模板中,你需要预先设置好可变数据区域(通常使用“网格”控件或类似功能),使其能根据数据源自动填充表格。
-
将数据绑定到模板中的表格数据源。
// 获取模板中的可变数据容器(例如表格)
var gridObject = document.FormulaObjects["YourGridObjectName"] as BTRowColObject;
gridObject.DataSourceType = RowColDataSourceTypeEnum.BTDataRowColDataSource;
gridObject.DataSource = btDataSet;
- 最后,设置打印机并执行打印任务。
// 设置打印机
var printerName = "YourPrinterName";
var printDocument = document.PrinterPrintDocuments[printerName];
printDocument.PrintFileName = "Warehousereceipt.pdf"; // 如果你想输出PDF文件而不是直接打印
// 执行打印
document.Print(printDocument);
// 关闭模板和应用程序
document.Close(false);
application.Quit();
注意:上述代码仅为示例,实际应用时需要根据具体的BarTender版本、模板结构以及数据绑定方式做相应调整。另外,确保在项目中正确引用BarTender的Interop库,并且理解每个方法的具体含义及用法。