获取逗号而不是十进制动态CommonReport

时间:2017-04-26 08:00:26

标签: c# webforms reporting

我正在创建一个commonreport但是我用逗号而不是点来获取十进制值。我尝试更改文化值,如下所示,并在我的pdf中使用相同的逗号

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

这是我的代码:

 ReportGenerator gen = new ReportGenerator(tbl, dt);

    ReportDataSource ds = new ReportDataSource(tbl, dt);
    LocalReport report=new LocalReport();
Tuple<System.IO.Stream, float> res = gen.GeneraReport(compName, prm, abbr, font);
    report.LoadReportDefinition(res.Item1);

    Byte[] mybytes = report.Render("PDF"); //for exporting to PDF
    using (FileStream fs = File.Create(fn))
    {
        fs.Write(mybytes, 0, mybytes.Length);
    }

    Response.Clear();
    Response.Buffer = false;
    Response.AddHeader("Accept-Ranges", "bytes");
    Response.ContentType = "application/octet-stream";
    Response.AddHeader("Connection", "Keep-Alive");
    Response.ContentEncoding = System.Text.Encoding.UTF8;
    Response.AppendHeader("Content-Type", "Application/x-pdf");
    Response.AppendHeader("Content-disposition", "attachment; filename=" + fileName + ".pdf");
    Response.WriteFile(fn);
    Response.End();

我希望它为

ColumnName
1000.0

pdf中的实际输出是

ColumnName
1000,0

提前致谢

1 个答案:

答案 0 :(得分:0)

我通过更改

来改变了报告的文化
 LoadReportDefinition 

属性并且有效。 现在我在PDF中获取小数而不是逗号 我不得不在&#34;字符串内容&#34;处设置断点。并阅读其内容以了解报告使用的文化

 Tuple<System.IO.Stream, float> res = gen.GeneraReport(compName, prm, abbr, font);
    string content = new StreamReader(res.Item1, Encoding.UTF8).ReadToEnd();
    content = content.Replace("<Language>it-IT</Language>", "<Language>en-IN</Language>");

    //report.LoadReportDefinition(res.Item1);
    report.LoadReportDefinition(new MemoryStream(Encoding.UTF8.GetBytes(content)));

感谢所有帮助过我的人 问候