自制简易报表编辑ReportBuild2.5参考

desperaso 2019-01-19 07:23:46
EzReportBuild 2.5报表组件,可以完成报表设计、预览、打印等功能,提供接口函数,可以将设计、预览等嵌入到自定的winform中调用,使用简单,调用灵活。

在你的工程项目里,新建一个窗体,添加按钮,使用:

// 单独打开报表编辑器

private void button1_Click(object sender, EventArgs e)

{

_Interface.independent_DesignForm();

}

打开设计器设计报表,保存报表后可去掉按钮,该工程项目生成的报表,别的应用不能打开查看。

如需复杂数据报表,可先生成一个临时数据库表,然后引入报表系统,由于报表数据为按行读取,所以只要能够设计出数据库各字段和内容,就能够生成相应的报表。

打印规则为“内容区域”栏目无论所在位置,紧跟页头栏,所以适当调整“页头区域”、“页脚区域”位置,保证按需求输出。

制作每页多行数据报表,“内容区域”为自动计算填充“页头区域”、“页脚区域”之间的空间,应适当调整“内容区域”栏目和页头页脚之间的空间,达到最佳打印效果。如需在表格内添加空行,可在生成的报表数据库表中添加空记录即可。

注意:使用时,将fontawesome-webfont.ttf字体文件与exe文件放置在一起,使用Access数据库时,注意路径,如没有安装AccessDatabaseEngine.exe,可在微软网站下载安装(必须安装)。

2.0版本添加了多报表页嵌套功能,每份报表可设置多页,每页可设置不同的纸张大小、数据表、页面规则等,并可对报表页次序即时调整,同时,优化了显示,报表显示更流畅。
2.3增加了数据库生成一维码、二维码以及直接写入维码;数据库字段之间进行混合四则运算。
2.5统一了界面,包括打开、保存文件对话框等均自定义,修改了一些错误。

demo由于数据库字段生成一维、二维码,所以预览打开较慢,以后优化;还有些错误,以后修改吧。
注意:AccessDatabaseEngine.exe,可在微软网站下载安装(必须安装)

https://pan.baidu.com/s/1yJwagcdZ89bR5BHaxg6Alg




RBuild_Interface _Interface = new RBuild_Interface();
RBuild_Preview rpb = new RBuild_Preview();

public Form1()
{
InitializeComponent();
}

// 单独打开报表编辑器
private void button1_Click(object sender, EventArgs e)
{
_Interface.independent_DesignForm();
}

// 单独打开报表预览
private void button2_Click(object sender, EventArgs e)
{
_Interface.independent_PreviewForm(@"测试报表1.rpt", 2, "", "", "", "地址库.mdb");
}


private void button3_Click(object sender, EventArgs e)
{
// 按钮可以使用
b1.Enabled = true;
b2.Enabled = true;
b3.Enabled = true;
b4.Enabled = true;
b5.Enabled = true;
b6.Enabled = true;
b7.Enabled = true;
b8.Enabled = true;
_Interface.embedded_PreviewForm(rpb, panel1, @"测试报表1.rpt", 2, "", "", "", "地址库.mdb", true);
}

private void b1_Click(object sender, EventArgs e)
{
_Interface.preview_FirstPage(rpb);
}

private void b2_Click(object sender, EventArgs e)
{
_Interface.preview_PreviousPage(rpb);
}

private void b3_Click(object sender, EventArgs e)
{
_Interface.preview_NextPage(rpb);
}

private void b4_Click(object sender, EventArgs e)
{
_Interface.preview_LastPage(rpb);
}

private void b5_Click(object sender, EventArgs e)
{
_Interface.preview_Search(new Point(200,200));
}

private void b6_Click(object sender, EventArgs e)
{
_Interface.zoom_Menu(rpb,new Point(300,200));
}

private void b7_Click(object sender, EventArgs e)
{
_Interface.print_Page(rpb);
}

private void b8_Click(object sender, EventArgs e)
{
int _now, _tol;
_now = _Interface.get_NowPage(rpb);
_tol = _Interface.get_TotalPage();

MessageBox.Show("当前页:"+_now+"--- 总页数:"+_tol);
}
}

...全文
639 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
阔以阔以,很多小项目有个这个加个数据库就够了
desperaso 2019-02-12
  • 打赏
  • 举报
回复
有错误,自行修改,自行优化,game over。

4,819

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧