类型或命名空间名称“Utility”在命名空间“Aspose.Cells”中不存在(您是否缺少程序集引用?

The type or namespace name 'Utility' does not exist in the namespace 'Aspose.Cells' (are you missing an assembly reference?)

提问人:Niffy 提问时间:5/5/2021 更新时间:5/10/2021 访问量:1033

问:

嘿。。我现在正面临一个泡菜。

我需要开发一个程序,其中许多功能之一是它可以将JSON文件转换为CSV文件。

这是我所拥有的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;
using Aspose;
using Aspose.Cells;

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string str = File.ReadAllText(@"C:\cpi\log\V510ResultsInfo\cpi001.json");

            Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();

            Aspose.Cells.Cells cells = workbook.Worksheets[0].Cells;

            Aspose.Cells.Utility.JsonLayoutOptions importOptions = new 
            Aspose.Cells.Utility.JsonLayoutOptions();
            importOptions.ConvertNumericOrDate = true;
            importOptions.ArrayAsTable = true;
            importOptions.IgnoreArrayTitle = true;
            importOptions.IgnoreObjectTitle = true;
            Aspose.Cells.Utility.JsonUtility.ImportData(str, cells, 0, 0, importOptions);

            workbook.Save(@"C:\cpi\log\V510ResultsInfo\convertedjson.csv");
        }
    }
}

问题是“Aspose.Cells.Utility”中的“Utility”..一直在网上搜索,但似乎没有什么大事发生。.

我所知道的是“Aspose.Cells.Utility.JsonLayoutOptions”位于“Aspose.Cells.Utility”命名空间中,该命名空间属于Aspose.Cells.dll。DLL没有问题,一切都很棒。只是错误仍然存在:

错误消息:命名空间“Aspose.Cells”中不存在类型或命名空间名称“Utility”(您是否缺少程序集引用?

C# asp.net JSON visual-studio-2013 命名空间

评论


答:

0赞 Jayrag Pareek 5/5/2021 #1

我认为您不需要 Aspose 来创建 csv 试试这个:

private void Button_Click(object sender, RoutedEventArgs e)
{
    string json = File.ReadAllText(@"C:\cpi\log\V510ResultsInfo\cpi001.json");
    var model = JsonConvert.DeserializeObject<MyModel>(json, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
    InsertRecordInCsv(model, "convertedjson");
}

public static void InsertRecordInCsv<T>(T model, string fileName)
{
    string targetFolder = @"C:\cpi\log\V510ResultsInfo\";//fileSaveFolderName
    if (!Directory.Exists(targetFolder))
    {
        Directory.CreateDirectory(targetFolder);
    }
    string targetPath = Path.Combine(targetFolder, fileName + ".csv");
    if (!File.Exists(targetPath))
    {
        var fs = new FileStream(targetPath, FileMode.Create);
        fs.Close();
        string csvHeader = string.Empty;
        foreach (PropertyInfo info in typeof(T).GetProperties())
        {
            csvHeader += (!string.IsNullOrEmpty(csvHeader) ? "," : string.Empty) + info.Name;
        }
        csvHeader += Environment.NewLine;
        File.AppendAllText(targetPath, csvHeader);               
    }

    StringBuilder sbData = new StringBuilder();
    string csvModel = string.Empty;
    foreach (PropertyInfo info in typeof(T).GetProperties())
    {
        string value = GetPropValue(model, info.Name) != null ? GetPropValue(model, info.Name).ToString() : string.Empty;
        sbData.Append("\"" + value.Replace("\"", "\"\"") + "\",");
    }
    sbData.Replace(",", Environment.NewLine, sbData.Length - 1, 1);

    File.AppendAllText(targetPath, sbData.ToString());
}
 public static object GetPropValue(object src, string propName)
 {
   if (src.GetType().GetProperty(propName) != null)
       return src.GetType().GetProperty(propName).GetValue(src, null);
   return new object();
 }

评论

0赞 Niffy 5/5/2021
嘿,伙计!首先,感谢您这么快回复我。.我对代码可以执行并不感到惊讶!当我按下按钮时,它会创建一个 CSV 文件。但问题是CSV文件中没有数据:(
0赞 Niffy 5/5/2021
好吧,我知道怎么了..它是: sbData.Replace(“,”, Environment.NewLine, sbData.Length - 1, 1);但我不知道为什么......
0赞 Jayrag Pareek 5/5/2021
你创建了函数吗?Common.GetPropValue()
0赞 Niffy 5/10/2021
我做了。。public string Name { get { return model; } set { Name = value;
0赞 Jayrag Pareek 5/10/2021
刚刚更新了答案检查添加的功能GetPropValue()
1赞 Patrick 5/5/2021 #2

除了 jayrag 提供的答案之外,我想说的是,Apsose.Cells.Utility 似乎是一个较新的命名空间,因此它不适用于旧版本的 Aspose。我刚刚检查了版本 17,那里绝对不可用。我也找不到任何可以帮助您的替代方法 Aspose.Cells.似乎 json 支持仍然很新,要使用它,您需要升级许可证。鉴于 aspose 的价格,您可能应该采取解决方法。希望这能有所帮助。 干杯!

评论

0赞 Niffy 5/5/2021
这就是我的想法,这就是为什么我可以;似乎什么都找不到..无论如何,Haizz 谢谢 <3
0赞 Amjad Sahi 5/8/2021
是的,将 JSON 导入 Excel 和将 Excel 导出到 JSON 是较新的功能,因此您必须升级并使用较新版本的 Aspose.Cells 来执行您的代码段。我在 Aspose 担任支持开发人员/布道者。