メニュー最初の一歩基本的な仕組み機能サンプル
プログラム仕様デザイン仕様機能拡張その他関連製品開発・運営会社 |
最小限のコードRapidReportを用いて、C#/VisualBasic/Javaそれぞれにおいて各形式の帳票を出力する最小限のコードを以下に示します。
※どの例も、エラー処理は省略しています。
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のレスポンスとして出力RapidReport5.16以前を利用の場合、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(); } (.NET5以降/.NET Coreのみ)非同期での帳票定義ファイル(RRPT)読込Json.ReadAsyncメソッドを利用することで、RRPTファイルの読込を非同期で行うことができます。 Report report = new Report(await Json.ReadAsync(server.MapPath("report\\example.rrpt"))); ... VisualBasicVisualBasicからプレビュー画面表示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のレスポンスとして出力RapidReport5.16以前を利用の場合、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 JavaJavaでの帳票定義ファイル読み込み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(); } |
Copyright (c) 2013, SystemBase Co.,Ltd. All rights reserved. |