systembase 株式会社 システムベース

TEL:0197-71-1111(代表)

最小限のコード

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での帳票定義ファイル読み込み

RapidReportのJava版を利用する際は、帳票定義ファイル(拡張子rrpt/Json形式)を読み込むために、以下のReadUtilクラスを作成してください。

  import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.LinkedHashMap;
  import java.util.Map;

  import com.fasterxml.jackson.core.JsonParseException;
  import com.fasterxml.jackson.core.JsonParser.Feature;
  import com.fasterxml.jackson.core.type.TypeReference;
  import com.fasterxml.jackson.databind.JsonMappingException;
  import com.fasterxml.jackson.databind.ObjectMapper;

  public class ReadUtil {
    private ReadUtil(){};
    public static Map<?, ?> readJson(String path) throws JsonParseException, JsonMappingException, IOException{
      InputStream is = new FileInputStream(path);
      try {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
        return mapper.readValue(is, new TypeReference<LinkedHashMap<String,Object>>(){});
      }finally {
        is.close();
      }
    }
  }

上記のReadUtilクラスは、Json読み込みライブラリとしてJacksonを利用する場合に利用してください。 もしも、Jsonicを利用する場合は、以下のクラスを利用してください。

  import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.io.Reader;
  import java.util.Map;

  import net.arnx.jsonic.JSON;
  import net.arnx.jsonic.JSONException;

  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{
            JSON json = new JSON();
            json.setMaxDepth(256);
            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();
  }