如果确定有数据的话,先转成字节数组byte[],(byte[])dt.rows[0]["xxxx"],然后把它输出成一个临时文件temp.rpt:File.WriteAllBytes(路径, 数组);
当然,如果使用人多,temp.rpt必须得考虑并发的问题,你可以根据用户名命名,比如:zwc99sx.rpt,这样一个用户只生成一个rpt临时文件。然后水晶报表(前面忘了哈,你自己找一下加载,很多).load加载。主要是load只能加载文件,不知道能不能直接加载byte[],不然也不用转这么麻烦。