最近有个项目用到了打印小票得功能,使用了C#自带得rdlc报表插件可以实现,以下是使用C# MVC写了一个案例;
1.创建一个空得mvc项目,这部分跳过;
2.新建一个文件夹rdlc,存放rdlc要用到得数据集和数据源;

3,先创建一个数据集,它类似一个数据公用池子,里面可以又多个表;

4.数据集池子创建完成后,点击数据集,可以在里面添加多张表,表名称可以自己取,只是填充得时候,从数据库返回得表名要和自己添加得表字段名称一样;

5.添加报表;

6.打开报表,添加数据绑定,点击数据集,右键会有,一般名称可以改成对应得,数据填充要和名称一直,不然数据不显示;

7.自己可以使用控件画图,如果出现中文乱码或者变成小框框,请设置字体位宋体或者其他字体;


以上工作完成后可以写代码了,以上是测试代码,数据都是临时造得,本次测试主要是2个数据集,一个主表(dt1),一个明细表(dt),代码就不一行行解释了哈;
前端加一个就可以直接调用这个方法: @Html.ActionLink("打印", "ExportExcelprint")
public FileResult ExportExcelprint()
{
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Code", typeof(string));
dt.Columns.Add("Price", typeof(string));
for (int i = 0; i < 20; ++i)
{
DataRow row = dt.NewRow();
row["Name"] = "左炔诺孕酮炔雌醚片(长效口服避孕药)";
row["Code"] = "1";
row["Price"] = "10.5";
dt.Rows.Add(row);
}
DataTable dt1 = new DataTable();
dt1.Columns.Add("Num", typeof(string));
dt1.Columns.Add("Time", typeof(string));
DataRow row1 = dt1.NewRow();
row1["Num"] = DateTime.Now.ToString("yyyyMMddHHmmssfff");
row1["Time"] = DateTime.Now.ToString("yyyy.MM.dd");
dt1.Rows.Add(row1);
LocalReport localReport = new LocalReport();
localReport.ReportPath = Server.MapPath("~/rdlc/Report1.rdlc");
ReportDataSource reportDataSource = new ReportDataSource("DataSet1", dt);
ReportDataSource reportDataSource1 = new ReportDataSource("DataSet2", dt1);
localReport.DataSources.Add(reportDataSource);
localReport.DataSources.Add(reportDataSource1);
//string reportType = "Word";
string reportType = "PDF";
string mimeType;
string encoding;
string fileNameExtension;
Warning[] warnings;
string[] streams;
byte[] renderedBytes;
StringBuilder deviceInfo = new StringBuilder();
deviceInfo.AppendLine("<DeviceInfo>");
deviceInfo.AppendLine("<OutputFormat>PDF</OutputFormat>");
deviceInfo.AppendLine("<PageWidth>7cm</PageWidth>");
deviceInfo.AppendFormat("<PageHeight>{0}cm</PageHeight>", dt.Rows.Count + 4);
deviceInfo.AppendLine("<MarginTop>0.1cm</MarginTop>");
deviceInfo.AppendLine("<MarginLeft>0.1cm</MarginLeft>");
deviceInfo.AppendLine("<MarginRight>0.1cm</MarginRight>");
deviceInfo.AppendLine("<MarginBottom>0.1cm</MarginBottom>");
deviceInfo.AppendLine("</DeviceInfo>");
//Render the report
renderedBytes = localReport.Render(
reportType,
deviceInfo.ToString(),
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
//string path = Server.MapPath(@"a.pdf");
//FileStream fs = new FileStream(path, FileMode.Create);
//fs.Write(renderedBytes, 0, renderedBytes.Length);
//fs.Dispose();
return File(renderedBytes, mimeType);
}
页面预览效果:

大家有看不懂得地方,随时留言,我看到会回复,加我可以点击这个网址:http://www.f12.fun