C#写入Excel文件方式

由于在工作中经常要把数据库的统计数据导入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;
        }

当然了,导出的方式有很多种,这只是其中比较简单的一种。