メニュー最初の一歩基本的な仕組み機能サンプル
プログラム仕様デザイン仕様機能拡張その他関連製品開発・運営会社
|
最小限のコード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. |
|