【问题标题】:How to printout JSON from console to file如何将 JSON 从控制台打印到文件
【发布时间】:2019-10-29 09:20:02
【问题描述】:

我正在创建一个 Excel 到 JSON 解析器,一切正常,但我很困惑。目前我的应用程序在控制台中显示结果,我想对其进行修改并将结果作为名为 output.json 的文件写入本地计算机上的磁盘。

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.OleDb;
using System.Linq;


namespace ExcelToJSON
{
    class Program
    {
        static void Main(string[] args)
        {
            var path = @"C:\Users\demir.mahmutovic\Desktop\aaa.xlsx";
            string sheetName = "Sheet1";

            var connstr = string.Format(@"
            Provider=Microsoft.ACE.OLEDB.12.0;
            Data Source={0};
            Extended Properties=""Excel 12.0 Xml;HDR=YES""", path);

            using (var conn = new OleDbConnection(connstr))
            {
                conn.Open();

                var cmd = conn.CreateCommand();
                cmd.CommandText = String.Format(@"SELECT * FROM [{0}$]",
                sheetName
                );

                using (var rdr = cmd.ExecuteReader())
                {
                    //LINQ query - when executed will create anonymous objects for each row
                    var query =
                        (from DbDataRecord row in rdr
                         select row).Select(x =>
                         {

                             //dynamic item = new ExpandoObject();
                             Dictionary<string, object> item = new Dictionary<string, object>();
                             item.Add(rdr.GetName(0), x[0]);
                             item.Add(rdr.GetName(1), x[1]);
                             item.Add(rdr.GetName(2), x[2]);
                             item.Add(rdr.GetName(3), x[3]);
                             item.Add(rdr.GetName(4), x[4]);
                             item.Add(rdr.GetName(5), x[5]);
                             item.Add(rdr.GetName(6), x[6]);
                             item.Add(rdr.GetName(7), x[7]);
                             item.Add(rdr.GetName(8), x[8]);
                             item.Add(rdr.GetName(9), x[9]);
                             item.Add(rdr.GetName(10), x[10]);
                             item.Add(rdr.GetName(11), x[11]);
                             item.Add(rdr.GetName(12), x[12]);
                             item.Add(rdr.GetName(13), x[13]);
                             item.Add(rdr.GetName(14), x[14]);
                             item.Add(rdr.GetName(15), x[15]);
                             item.Add(rdr.GetName(16), x[16]);
                             item.Add(rdr.GetName(17), x[17]);
                             item.Add(rdr.GetName(18), x[18]);
                             return item;

                         });

                    //Generates JSON from the LINQ query
                    var json = JsonConvert.SerializeObject(query);
                    var result = json;
                    Console.WriteLine(result);
                    Console.ReadLine();
                    //return json;
                }
            }
        }
    }
}

谁能指导我并告诉我这是否可能以及解决此问题的最佳方法是什么。非常感谢,

【问题讨论】:

  • 最简单的方法是使用File.WriteAllText。我有点惊讶您设法查询一个 excel 文件并序列化为 json 但不知道 System.IO...
  • 嗯,我知道System.IO
  • 抱歉,我不想攻击你——我真的很惊讶,因为这似乎比你在程序中已经做的要基本得多。
  • 对不起,我刚开始编程,对我来说一切都是新的:/也许对你来说很简单,但对我来说不是

标签: c# asp.net json excel


【解决方案1】:

正如在 cmets 中已经提到的,使用 File.WriteAllText

string path = @"C:\Users\demir.mahmutovic\Desktop\output.json";
string json = JsonConvert.SerializeObject(query);
File.WriteAllText(path, json);

【讨论】:

    【解决方案2】:

    你可以使用 StreamWriter ,我只是在文件名中添加日期,

    using (StreamWriter file = new StreamWriter($"ToolBox_Log_" + DateTime.Now.ToString("dd_MM_yyyy_hh_mm") + ".Json", true))
            {
    
                file.WriteLine(result);
            }
    

    【讨论】:

    • 不确定您是否了解我需要什么?我已经在控制台中有结果存储,但我希望这个 JSON 结果存储在 output.json 文件中
    • 是的,你看到了我用来写入磁盘的流写入器就像文件一样
    猜你喜欢
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2011-08-21
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多