最小限のコード

RapidReportを用いて、C#/VisualBasic/Javaそれぞれにおいて各形式の帳票を出力する最小限のコードを以下に示します。

※どの例も、エラー処理は省略しています。
※帳票に渡すデータの行数が0件の場合もエラーとなるので、行数のチェックを行ってメッセージを表示するなどの対応を行ってください。

C#

C#からプレビュー画面表示

  Report report = new Report(Json.Read("example.rrpt"));
  report.Fill(new ReportDataSource(dataTable));
  ReportPages pages = report.GetPages();
  Printer printer = new Printer(pages);
  FmPrintPreview preview = new FmPrintPreview(printer);
  preview.ShowDialog();

C#から直接印刷

  Report report = new Report(Json.Read("example.rrpt"));
  report.Fill(new ReportDataSource(dataTable));
  ReportPages pages = report.GetPages();
  Printer printer = new Printer(pages);
  if (printer.PrintDialog.ShowDialog() == DialogResult.OK)
  {
      printer.PrintDocument.Print();
  }

C#からPDF出力

  Report report = new Report(Json.Read("example.rrpt"));
  report.Fill(new ReportDataSource(dataTable));
  ReportPages pages = report.GetPages();
  using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
  {
    PdfRenderer renderer = new PdfRenderer(fs);
    renderer.Setting.ReplaceBackslashToYen = true;
    pages.Render(renderer);
  }    

C#からExcel(xls)出力

  Report report = new Report(Json.Read("example.rrpt"));
  report.Fill(new ReportDataSource(dataTable));
  ReportPages pages = report.GetPages();
  using (FileStream fs = new FileStream("output.xls", FileMode.Create))
  {
      HSSFWorkbook workbook = new HSSFWorkbook();
      XlsRenderer renderer = new XlsRenderer(workbook);
      renderer.NewSheet("sheet_name");
      pages.Render(renderer);
      workbook.Write(fs);
  }

C#からExcel(xlsx)出力

  Report report = new Report(Json.Read("example.rrpt"));
  report.Fill(new ReportDataSource(dataTable));
  ReportPages pages = report.GetPages();
  using (FileStream fs = new FileStream("output.xlsx", FileMode.Create))
  {
      XSSFWorkbook workbook = new XSSFWorkbook();
      XlsxRenderer renderer = new XlsxRenderer(workbook);
      renderer.NewSheet("sheet_name");
      pages.Render(renderer);
      workbook.Write(fs);
  }

C#からPDFをASPのレスポンスとして出力

ASP.NETでPDFを出力する場合は、 Global.asaxのApplication_Startメソッドに以下の内容を書いておく必要があります。

  void Application_Start(object sender, EventArgs e)
  {
    iTextSharp.text.pdf.BaseFont.AddToResourceSearch(Server.MapPath("bin\\iTextAsian.dll"));
  }

PDFを出力するコードは以下のようになります。

  Report report = new Report(Json.Read(server.MapPath("report\\example.rrpt")));
  report.Fill(new ReportDataSource(dataTable));
  ReportPages pages = report.GetPages();
  using (Stream _out = response.OutputStream)
  {
    PdfRenderer renderer = new PdfRenderer(_out);
    pages.Render(renderer);
    response.ContentType = "application/pdf";
    response.AddHeader("Content-Disposition", "attachment;filename=output.pdf");
    response.End();
  }

VisualBasic

VisualBasicからプレビュー画面表示

  Dim report As New Report(Json.Read("example.rrpt"))
  report.Fill(New ReportDataSource(dataTable))
  Dim pages As ReportPages = report.GetPages()
  Dim printer As New Printer(pages)
  Dim preview As New FmPrintPreview(printer)
  preview.ShowDialog() 

VisualBasicから直接印刷

  Dim report As New Report(Json.Read("example.rrpt"))
  report.Fill(New ReportDataSource(dataTable))
  Dim pages As ReportPages = report.GetPages()
  Dim printer As New Printer(pages)
  If printer.PrintDialog.ShowDialog = DialogResult.OK Then
    printer.PrintDocument.Print()
  End If  

VisualBasicからPDF出力

  Dim report As New Report(Json.Read("example.rrpt"))
  report.Fill(New ReportDataSource(dataTable))
  Dim pages As ReportPages = report.GetPages()
  Using fs As New FileStream("output.pdf", IO.FileMode.Create)
    Dim renderer As New PdfRenderer(fs)
    pages.Render(renderer)
  End Using

VisualBasicからExcel(xls)出力

  Dim report As New Report(Json.Read("example.rrpt"))
  report.Fill(New ReportDataSource(dataTable))
  Dim pages As ReportPages = report.GetPages()
  Using fs As New FileStream("output.xls", IO.FileMode.Create)
    Dim workbook As New HSSFWorkbook
    Dim renderer As New XlsRenderer(workbook)
    renderer.NewSheet("sheet_name")
    pages.Render(renderer)
    workbook.Write(fs)
  End Using

VisualBasicからExcel(xlsx)出力

  Dim report As New Report(Json.Read("example.rrpt"))
  report.Fill(New ReportDataSource(dataTable))
  Dim pages As ReportPages = report.GetPages()
  Using fs As New FileStream("output.xlsx", IO.FileMode.Create)
    Dim workbook As New XSSFWorkbook
    Dim renderer As New XlsxRenderer(workbook)
    renderer.NewSheet("sheet_name")
    pages.Render(renderer)
    workbook.Write(fs)
  End Using

VisualBasicからPDFをASPのレスポンスとして出力

ASP.NETでPDFを出力する場合は、 Global.asaxのApplication_Startメソッドに以下の内容を書いておく必要があります。

  Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    iTextSharp.text.pdf.BaseFont.AddToResourceSearch(Server.MapPath("bin\iTextAsian.dll"))
  End Sub

PDFを出力するコードは以下のようになります。

  Dim report As New Report(Json.Read("example.rrpt"))
  report.Fill(New ReportDataSource(dataTable))
  Dim pages As ReportPages = report.GetPages()
  Using out As Stream = response.OutputStream
    Dim renderer As New PdfRenderer(out)
    pages.Render(renderer)
    response.ContentType = "application/pdf"
    response.AddHeader("Content-Disposition", "attachment;filename=output.pdf")
    response.End()
  End Using  

Java

Javaでの帳票定義ファイル読み込み

本ドキュメント内のJavaのコード例は、 帳票定義ファイル(拡張子rrpt/Json形式)を読み込むための以下のクラスが定義されていることを前提としています。

  public class ReadUtil {
    private ReadUtil(){};
    public static Map<?, ?> readJson(String path) throws JSONException, IOException{
      InputStream is = new FileInputStream(path);
      try{
        Reader r = new InputStreamReader(is, "UTF-8");
        try{
          return (Map<?, ?>)JSON.decode(r);
        }finally{
          r.close();
        }
      }finally{
        is.close();
      }
    }
  }

JavaからPDF出力

  Report report = new Report(ReadUtil.readJson("example.rrpt"));
  report.fill(new ReportDataSource(data));
  ReportPages pages = report.getPages();
  FileOutputStream fos = new FileOutputStream("output.pdf");
  try{
    PdfRenderer renderer = new PdfRenderer(fos);
    pages.render(renderer);
  }finally{
    fos.close();
  }

JavaからExcel(xls)出力

  Report report = new Report(ReadUtil.readJson("example.rrpt"));
  report.fill(new ReportDataSource(data));
  ReportPages pages = report.getPages();
  FileOutputStream fos = new FileOutputStream("output.xls");
  try{
    HSSFWorkbook workBook = new HSSFWorkbook();
    XlsRenderer renderer = new XlsRenderer(workBook);
    renderer.newSheet("sheet_name");
    pages.render(renderer);
    workBook.write(fos);
  }finally{
    fos.close();
  }

JavaからExcel(xlsx)出力

  Report report = new Report(ReadUtil.readJson("example.rrpt"));
  report.fill(new ReportDataSource(data));
  ReportPages pages = report.getPages();
  FileOutputStream fos = new FileOutputStream("output.xlsx");
  try{
    XSSFWorkbook workBook = new XSSFWorkbook();
    XlsxRenderer renderer = new XlsxRenderer(workBook);
    renderer.newSheet("sheet_name");
    pages.render(renderer);
    workBook.write(fos);
  }finally{
    fos.close();
  }

JavaからPDFをServletのレスポンスとして出力

  Report report = new Report(ReadUtil.readJson("example.rrpt"));
  report.fill(new ReportDataSource(data));
  ReportPages pages = report.getPages();
  ByteArrayOutputStream byteout = new ByteArrayOutputStream();
  PdfRenderer renderer = new PdfRenderer(byteout);
  pages.render(renderer);
  
  response.setContentType("application/pdf");
  response.setContentLength(byteout.size());
  OutputStream out = response.getOutputStream();
  try{
    out.write(byteout.toByteArray());
  }finally{
    out.close();
  }