水晶报表中图表形式显示CSV数据

水晶报表支持以csv文件作为数据源,导入数据。

打开CrystalReport 2008,创建新连接——Access/Excel(DAO),数据库类型选择“文本”,然后导入.csv文件即可。顺便一提,水晶报表会自动识别csv第一行数据作为变量名称。

插入报表,在报表专家内进行如下设置:

水晶报表中图表形式显示CSV数据_第1张图片

Y是我自行设置的公式字段引用。不自己增加一个新字段的话会直接显示Y的和

如果curve_2_csv.y是字符串型的话,需要再转化下类型。CDbl ({curve_2_csv.y})

之后设置下报表的显示格式。比如坐标轴上的数值重复问题:可以在图表设置——Axes——Show Numberic Scale

我当前测试的数据包含10000个点,基本出来的效果是这样的

水晶报表中图表形式显示CSV数据_第2张图片

效果看上去还是不错……但是!!这渲染速度太慢了,鼠标随便在图表上点击一下就会被卡一下……

一般项目中实际数据点数可能会超过50w个,于是我模拟了一份数据大概30w个点,8m的csv文件

用Vim进行下批处理即可,妥妥的

qagg:2,$yG$pq5@a

模拟数据搞定之后,接着放水晶报表内测试。结果显示:


这回连显示都不行,水晶报表这东西真是谁用谁知道啊!

当前图表只支持32000个点,于是迅速给出3个解决方案:

1,寻找是否有其他可以显示的图表

2,使用filter把源数据过滤到32000个以下

3,利用图片动态代替图表


加载csv文件作为动态数据源加载:

            DataSet dsCSV = new DataSet();
            string strConnString="Driver={Microsoft Text Driver (*.txt; *.csv)}; Dbq=E://CR; Extensions=csv,txt; Persist Security Info=False";
            System.Data.Odbc.OdbcConnection conn;
            
            conn = new System.Data.Odbc.OdbcConnection(strConnString.Trim());
            conn.Open();

            string filetable = "curve_1.csv";
            string sql_select = "select x,y from [" + filetable + "]"; //"select * from curve_1.csv";

            System.Data.Odbc.OdbcDataAdapter myAdapter = new System.Data.Odbc.OdbcDataAdapter(sql_select, conn);
            myAdapter.Fill(dsCSV);
            rd.SetDataSource(dsCSV);

            int rowSize = dsCSV.Tables[0].Rows.Count;

            conn.Close();

你可能感兴趣的:(String,Microsoft,Security,csv,报表,dataset)