由于在工作中经常要把数据库的统计数据导入Excel文件,进行IO磁盘操作,所以在这里记录下。
首先创建默认文件夹,并返回文件夹路径。
private static string CPath(string path) { var index = path.LastIndexOf("/"); var temp = path.Substring(0, index); if (!Directory.Exists(temp))//如果不存在就创建file文件夹 Directory.CreateDirectory(temp);//创建该文件夹 return path; }
写入数据。
using (var s = new System.IO.StreamWriter(CPath("./测试.csv"), true, Encoding.GetEncoding("GB2312"), 30)) { s.WriteLine($"{"列1"},{"列2"}"); foreach (var item in list) { s.WriteLine($"{item.Column},{item.Column1}"); } }
另外我们在WebAPI项目中也经常要导出数据,这种方式在这里也记录下。
/// <summary> /// 导出Excel /// </summary> /// <returns></returns> [HttpGet] [Route("api/test")] public HttpResponseMessage TestExport() { var csv = new StringBuilder(); csv.AppendLine($"{"列1"},{"列2"}"); foreach (var item in list) { csv.AppendLine($"{item.Column},{item.Column1}"); } HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new ByteArrayContent(Encoding.GetEncoding("gbk").GetBytes(csv.ToString())); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-csv"); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = string.Format(@"测试{0}.csv", string.Format("{0:G}", DateTime.Now)), }; return response; }
当然了,导出的方式有很多种,这只是其中比较简单的一种。