请问如何从磁盘加载一个模板文件返回给JsViewer
本帖最后由 hexllo 于 2020-9-11 14:08 编辑如何根据传入的参数加载一个本地的报表模板(可能是RDL,页面,区域报表三者之一),加载出来之后按JsView需要的格式返回出去,我这样写不行,我把截图和代码打包上来(代码在附件中),麻烦老师帮忙看下
好的:) 本帖最后由 KearneyKang 于 2020-9-7 10:57 编辑
你好,根据你截图的描述,你是想绑定报表的路径是一个绝对路径是吧,也就是 你部署项目的磁盘的路径还是 ,是这样吗?
给报表的 路径绑定绝对路径是可以的,
public object GetReport(string P)//获取报表名称和报表参数,进行一个对应的报表名称和参数的分割
{
string reportName = P.Split(';');//报表名称;
string parameter1 = P.Split(';');//参数1;
string parameter2 = P.Split(';');//参数2;
PageReport rep = new PageReport();
string path = System.Web.Hosting.HostingEnvironment.MapPath("~/");
rep.Load(new FileInfo(@"" + path + "Reports/" + reportName));
//rep.Report.ReportParameters.DefaultValue.Values.Add("111");
return rep.Report;
}
public void Configuration(IAppBuilder app)
{
app.UseReporting(settings =>
{
settings.UseCompression = true;
settings.UseCustomStore(GetReport);//使用UseCustomStore来自定义一些需要的值
//settings.UseFileStore(new DirectoryInfo(String.Format(@"{0}.\Reports\", HttpRuntime.AppDomainAppPath)));
settings.LocateDataSource = args =>
{
DataTable dt = new DataTable();
string name = ReportName;
if (args.DataSet.Query.DataSourceName == "DataSource1")
{
/* string a = args.Report.Name.ToString();*/ //get Report name
/* var p1 = args.Parameters.Value.ToString();*/ //get Report Parameters
if (args.DataSet.Name == "DataSet1")
{
dt.Columns.Add("产品编号");
dt.Columns.Add("产品名称");
dt.Columns.Add("单价");
dt.Columns.Add("库存量");
dt.Columns.Add("产地");
dt.Rows.Add("A001", "苹果", 10, 300, "中国");
dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
dt.Rows.Add("A006", "芒果", 30, 400, "中国");
dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
dt.Rows.Add("A009", "栗子", 320, 400, "中国");
dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
dt.Rows.Add("A011", "青芒", 250, 200, "中国");
dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
dt.Rows.Add("A013", "土豆", 380, 400, "中国");
dt.Rows.Add("A014", "苹果", 110, 300, "中国");
dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
dt.Rows.Add("A017", "土豆", 380, 400, "中国");
dt.Rows.Add("A018", "苹果", 110, 300, "中国");
dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
dt.Rows.Add("A021", "苹果", 10, 300, "中国");
dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
dt.Rows.Add("A026", "芒果", 30, 400, "中国");
dt.Rows.Add("A001", "苹果", 10, 300, "中国");
dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
dt.Rows.Add("A006", "芒果", 30, 400, "中国");
dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
dt.Rows.Add("A009", "栗子", 320, 400, "中国");
dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
dt.Rows.Add("A011", "青芒", 250, 200, "中国");
dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
dt.Rows.Add("A013", "土豆", 380, 400, "中国");
dt.Rows.Add("A014", "苹果", 110, 300, "中国");
dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
dt.Rows.Add("A017", "土豆", 380, 400, "中国");
dt.Rows.Add("A018", "苹果", 110, 300, "中国");
dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
dt.Rows.Add("A021", "苹果", 10, 300, "中国");
dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
dt.Rows.Add("A026", "芒果", 30, 400, "中国");
}
if (args.DataSet.Name == "DataSet2")
{
string fp = "D://照片//报表水印.png";
//byte[] a = File.ReadAllBytes(@"D:\照片\报表水印.png");
byte[] a = SaveImage(fp);
MemoryStream stream = new MemoryStream(a);
BitmapImage bmp = new BitmapImage();
bmp.BeginInit();//初始化
bmp.StreamSource = stream;//设置源
bmp.EndInit();//初始化结束
dt.Columns.Add("产品编号");
dt.Columns.Add("产品名称");
dt.Columns.Add("单价");
dt.Columns.Add("库存量");
dt.Columns.Add("产地");
dt.Columns.Add("图片", typeof(byte[]));
dt.Rows.Add("A001", "苹果", 10, 300, "中国", a);
}
}
return dt;
};
});
}在这个方法里写路径: rep.Load(new FileInfo(@"" + path + "Reports/" + reportName)); 好的,请问 RDL报表,页面报表,区域报表都是 这样吗
var report=new PageReport();
report.load(xxx);
RDL报表和页面报表是一样的就是上面那样,区域报表有点不同,你现在使用的是RDl报表还是区域报表 好的,我明白了,现在用的是RDL报表
页:
[1]