• 微软报表


    using Microsoft.Reporting.WinForms;

    1 创建报表文件TagsReport.rdlc

    2 从工具箱拖一个table放在报表上,会自动配置数据源,建立dataset,可以选数据库,连接表,也可以选程序里的对象如ControlEase.AI.DataRecord.Record

    报表左侧的工具箱data source中就有了dataset,可以将每个字段拖到报表的表格中,也可以在报表的表格中智能感知添加列,此处的dataset的名字很重要,代码控制导出到excel时,名字不对就出错

    3 选择报表单元格设置前景背景颜色,在弹出的配色窗口中选择公式,在其中填入“=Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")  "设置行颜色交替变化

    4 代码控制输出excel

    public void Export(IEnumerable<Tuple<string, object, DateTime, int>> tagValues, string path)
            {
                //Guard.ArgumentNotNull(values, "values")
                //     .ArgumentStringNull(Filename, "Filename")
                //     .ArgumentNotNull(Culture, "Culture");

                IList<AI.DataRecord.Record> recordList = new List<AI.DataRecord.Record>();
                foreach (var tupl in tagValues)
                {
                    recordList.Add( AI.DataRecord.Record.FromTuple(tupl));
                }
                var values = recordList.GetEnumerator();
                string temp = GetTempFile();
                FileInfo fileInfo = new FileInfo(temp);        
                try
                {          
                    List<ReportParameter> parameters = new List<ReportParameter>(); 
                    parameters.Add(new ReportParameter("Name", "Name"));        
                    parameters.Add(new ReportParameter("Date", "Date"));
                    LocalReport report = new LocalReport();
                    report.ReportEmbeddedResource = "ControlEase.Inspec.HistoryDataRecord.Presentation.TagsReport.rdlc";
                    report.SetParameters(parameters);
                    Warning[] warnings;
                    string[] streamids;
                    string mimeType;
                    string encoding;
                    string extension;
                    report.DataSources.Add(new ReportDataSource("TagsReport", values));

    //bool ok = report.IsReadyForRendering;//true 才能Render
                    byte[] bytes = report.Render("EXCEL", null, out mimeType, out encoding, out extension,
                     out streamids, out warnings);

                    using (FileStream stream = new FileStream(temp, FileMode.CreateNew))
                    {
                        try
                        {

                            stream.Write(bytes, 0, bytes.Length);
                            stream.Close();
                        }
                        catch (Exception e)
                        {
                            e.ToString();
                        }
                    }

                    File.Copy(temp, path, true);
                }
                catch (Exception e)
                {
                    //throw e;
                }
                finally
                {
                    //if ( excel != null )
                    //    excel.Dispose ( );
                }
            }
            /// <summary>
            /// Get temp excel file name
            /// </summary>
            /// <returns></returns>
            static string GetTempFile()
            {
                string file = Path.GetRandomFileName();
                file = Path.ChangeExtension(file, ".csv");
                return Path.Combine(Path.GetTempPath(), file);
            }

    冻结表头

    在报表设计界面--table边框上鼠标右键--Tablix property---弹出新窗口设置----rows header :keep rows header visible while scrolling

  • 相关阅读:
    Html代码查看器
    Http请求
    HTTP协议
    AsyncTask2
    AsyncTask
    幽灵线程解决方案
    handler消息机制入门
    多叉树的树形背包常见建模方法
    Codeforces Round #263
    怎样在win7下装ubuntu(硬盘版安装)
  • 原文地址:https://www.cnblogs.com/baiyu/p/2131940.html
Copyright © 2020-2023  润新知