สร้างโปรเจ็กส์แบบ ASP.NET Core Web API
ติดตั้ง ReportViewerCore.NETCore
PM> Install-Package ReportViewerCore.NETCore -Version 15.1.15
สร้างโฟลเดอร์ Reports
Add Report ชื่อ Reports/Report0.rdlc
เพิ่ม API Controller ชื่อ Controllers/ValuesController.cs
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Reporting.NETCore; namespace WebApi5.Controllers { [Route("[controller]")] [ApiController] public class ValuesController : ControllerBase { private readonly ILogger<ValuesController> _logger; private IWebHostEnvironment _env; public ValuesController(ILogger<ValuesController> logger , IWebHostEnvironment env) { _logger = logger; _env = env; } [HttpGet("{id}")] public string Get(int id) { string rootPath; if (!string.IsNullOrEmpty(_env.WebRootPath)) rootPath = _env.WebRootPath; else rootPath = _env.ContentRootPath; _logger.LogInformation($"rootPath = {rootPath}"); LocalReport report = new LocalReport(); report.ReportPath = $"{rootPath}\\Reports\\Report0.rdlc"; byte[] pdf = report.Render("PDF"); string pdfPathOP = System.IO.Path.Combine(rootPath, "reportOut.pdf"); System.IO.File.WriteAllBytes(pdfPathOP, pdf); return "success"; } } }
ลองเรียก https://localhost:44395/values/5 จะได้ไฟล์ reportOut.pdf
ตัวอย่างการส่งค่าด้วย DataSet
ให้ add | new item | dataset ชื่อ DataSetTable1
ที่หน้า design ของ DataSetTable1 สร้างตาราง DataTable1 แล้วเพิ่มคอลัมน์ title
, name
DataSetTable1 dsTable1 = new DataSetTable1(); DataRow row01 = dsTable1.DataTable1.NewRow(); row01["title"] = "Mr."; row01["name"] = "Jack"; dsTable1.DataTable1.Rows.Add(row01); LocalReport localReport1 = new LocalReport(); localReport1.ReportPath = $"{rootPath}\\Reports\\Report1.rdlc"; localReport1.DataSources.Add(new ReportDataSource("DataSetTable1", dsTable1.DataTable1));
กรณีที่ Report มีมากกว่า 1 DataSet
ถ้าลากฟิลด์มาวางจะได้
=Fields!first_name.Value
ให้ระบุ DataSet ลงไป
=First(Fields!first_name.Value, "DataSet1")