由於在工作中經常要把數據庫的統計數據導入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; }
當然了,導出的方式有很多種,這只是其中比較簡單的一種。