c# - 打印不同文件中的报告页面,动态提供文件名

标签 c# java ms-access reporting

我遇到了对报告和报告打印的挑战性要求。要求是:创建一个报告(假设有 5 页),每个页面应保存在不同的文件中,并通过代码动态提供文件名(使用该页面上的记录 id)。

目前,我尝试使用Access和VBA,我可以获得X页的报告,但无法将报告的每一页保存在单独的文件中。我该如何实现这一目标?

是否有任何其他技术可以帮助我实现此目标 - 也许 C# 或 Java 编程可以帮助我?我已经在这个问题上坚持了三天了。

谢谢

我的 Access 代码和问题:

Private Sub Report_Click()
 Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim MyFilename As String
Dim MyPath As String
Dim temp As String
Set db = CurrentDb
MyPath = "c:\temp\"
Dim stremp As String
stremp = "select distinct(empno) from query2"
Set rs = db.OpenRecordset(stremp)
Do While Not rs.EOF
    temp = rs("Empno")
    MyFilename = rs("EMPNO") & ".PDF"
    DoCmd.OpenReport "FORM", acViewReport, "EMPNO" = " & temp"
    'DoCmd.OpenReport "form", acViewPreview, , "empno", acWindowNormal
    DoCmd.OutputTo acOutputReport, "", acFormatPDF, MyPath & MyFilename
    'do.cmd.outputto
    DoCmd.Close acReport, "FORM"
     DoEvents
    rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
 End Sub

记录集有 5 条记录,即 5 页。它打印 5 次 5 页,即对于 Record1,我得到所有 5 条记录,Record2 - 所有 5 条记录等等。相反,我应该只为 Record1 创建 1 个,为 Record2 创建 1 个,依此类推。

任何人都可以帮助我知道我的代码哪里错误/不正确。

谢谢

最佳答案

您可以将任务拆分为:

  1. 将完整报告生成为一个文件

  2. 将报告的每一页存储为不同的文件。

如果您已经完成第一部分,并且您可以将报告存储为 pdf 文件,那么对于第二部分,我建议使用 iText。它是 java 库,但也可以移植到 c#。

小例子:

    String folder = "/home/user/report/";
    InputStream is = new FileInputStream(folder + "test.pdf");
    PdfReader reader = new PdfReader(is);

    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        File tmp = new File(folder + "out" + i +".pdf");
        FileOutputStream outStream = new FileOutputStream(tmp);
        Document pdDoc = new Document(PageSize.A4);
        PdfWriter writer = PdfWriter.getInstance(pdDoc, outStream);
        pdDoc.open();
        PdfContentByte cb = writer.getDirectContent();
        PdfImportedPage page = writer.getImportedPage(reader, i);
        pdDoc.newPage();
        cb.addTemplate(page, 0, 0);
        pdDoc.close();
    }

关于c# - 打印不同文件中的报告页面,动态提供文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17169366/

相关文章:

c# - Microsoft.AspNet.WebApi.OData 和 Microsoft.Data.OData 和 Microsoft.AspNet.OData 之间有什么区别?

c# - SQL查询多次返回同一条记录

java - 有人可以帮助我了解 ImageIcon 在 java 中的工作原理吗?

java - 具有Java,IntelliJ和Gradle的Selenium-驱动程序可执行文件的路径必须由webdriver.gecko.driver系统属性设置

ms-access - 避免字段为空时 Invalid use of Null 错误

c# - 为什么 GC 在 LINQ 查询后释放 WhereListIterator 而不是表示条件的函数?

java - 将 CLASSPATH 更改为 JUNIT_HOME/junit-4.12.jar,java 命令停止工作

sql - 如何解决 MS Access 2010 中的 "Data type mismatch in criteria expression"错误?

c# - 当使用 OleDBDataReader 从 Access 数据库中选择一个备注字段时,它只返回部分字符串。我怎样才能得到整个字符串?

c# - 检测具有相同 child 的实体