zoukankan      html  css  js  c++  java
  • Json文件转Excel

    先创建一个web项目,在根目录放置需要转换的json文件,直接读取静态Json文件加载数据进行转换,代码如下:

    string Json = string.Empty;
                List<object> list = new List<object>();
                string filePath = Server.MapPath("/***.json");//指定目录下的json文件(当前为根目录)
                using (FileStream fs = new FileStream(filePath, FileMode.Open, System.IO.FileAccess.Read, FileShare.ReadWrite))
                {
                    using (StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("gb2312")))
                    {
                        Json = sr.ReadToEnd().ToString();
                    }
                }
    View Code

    接着引入Newtonsoft.Json 文件,将Json字符串转Datatable

     DataTable dt = (DataTable)JsonConvert.DeserializeObject(Json, typeof(DataTable));

    然后将Datable转成Dataset

    DataSet ds = new DataSet();
    ds.Tables.Add(dt);

    最后直接用Response导出结果:

    ExportResult(ds, "Json.xls");//Json.xls名字自定义

    用到的ExportResult方法代码如下:

    /// <summary>
            /// 将ds转换成excel
            /// </summary>
            /// <param name="ds"></param>
            /// <param name="excelName"></param>
            public void ExportResult(DataSet ds, string excelName)
            {
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.Charset = "";
                HttpContext.Current.Response.ContentType = "application/vnd.ms-xls";
                StringWriter stringWrite = new StringWriter();
                HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    
                DataGrid dg = new DataGrid();
                dg.DataSource = ds;
                dg.DataBind();
                dg.RenderControl(htmlWrite);
                HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(excelName));
                HttpContext.Current.Response.Write(stringWrite.ToString());
                HttpContext.Current.Response.End();
            }
    View Code

    以上为楼主总结,如有更好的方法请留言推荐,谢谢!

    *:如需转发请标注来源,谢谢!

  • 相关阅读:
    三种解决IE版本兼容性问题
    CSS 如何让超链接访问后和访问前的颜色不同且访问后仍保留hover和active效果
    bootstrap 笔记用法
    STL优缺点
    输出最大回文数
    将一组单词逆序输出
    排序算法
    背包问题
    二进制
    sstream
  • 原文地址:https://www.cnblogs.com/HenryWEI/p/9804679.html
Copyright © 2011-2022 走看看