报表导出思路为,在后台用iDataReader将查询得到的数据写进文件并压缩,向前端返回文件位置的链接,在前端执行下载操作。
web端:
1. ajax请求url,将返回的路径json字符串解析并执行下载操作;
2.controller接受请求,并返回路径的json字符串。
服务端:
1.idataReader将读取的数据库数据写入文件,使用方法ExportToFile。
public static bool ExportToFile(this IDataReader dataReader, Dictionary<string, string> columnsNames, string fileName, bool writeHeader, out string errorMsg);
示例:
bridgedt.ExportToFile(columnNames, masterFile, true, out errMessage)
2.然后将文件压缩,返回文件路径链接。
3.路径示例
string zipRelativeFileName = @"tmpfiles\" + string.Format(fileName+ ".zip"); string zipDir = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "tmpfiles", Guid.NewGuid().ToString()); string zipFile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, zipRelativeFileName); string masterFile = System.IO.Path.Combine(zipDir, fileName + ".csv"); System.IO.Directory.CreateDirectory(zipDir); if (System.IO.File.Exists(zipFile)) { System.IO.File.Delete(zipFile); } ZipHelper zipHelper = newZipHelper(); //ZipHelper 为自定义类,实现压缩功能 zipHelper.ZipFileDirectory(zipDir, zipFile); System.IO.Directory.Delete(zipDir, true); return zipRelativeFileName.Replace("\\", "/");