保存用户输入以供以后使用C#

时间:2017-04-30 16:54:38

标签: c# excel visual-studio vsto

Howdee All,

我有一个C#VSTO Excel加载项,我的组织使用它来进行各种选择以将数据导入Excel。用户界面是一种Windows窗体。有一个下拉框,它为一个带有可用参数的组合框提供信息,用户在那里选择输入来定义查询的参数。我在列表框中显示参数,以便用户可以选择他/她。我已经要求能够保存参数输入,以便用户可以快速调用而无需反复输入相同的信息,但不确定最佳方法。

基本上需要在用户请求时从列表框中存储第一个下拉框和与之关联的参数。创建一个文本文件以保存给用户PC最好的方法吗?我想创建一个隐藏的选项卡将它们存储在Excel中,但它仅限于该文件。我对C#比较新,所以不确定是否有更好的方法我不知道。

干杯, 莱恩

1 个答案:

答案 0 :(得分:1)

正如您所说,您不想将它们限制在相关文件中,我的方法可能是将其保存到用户的AppData文件夹中,并使用XML序列化。你可以在下面看到一个例子。

数据将在C:\ Users \ $ user $ \ AppData \ Roaming或... \ Local中,具体取决于您选择的AppData文件夹。有关详细信息,请参阅this

序列化:

// this is just an example object, can do whatever you'd like here
var myObject = new MyObject()
{
    MyValue = "some data"
};

string path = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "MyExcelAddIn\\data.xml");

Directory.CreateDirectory(Path.GetDirectoryName(path));

var serializer = new XmlSerializer(typeof(MyObject));
using (var fileStream = new FileStream(path, FileMode.Create))
{
    serializer.Serialize(fileStream, myobject);
}

反序列化:

string path = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "MyExcelAddIn\\data.xml");

MyObject myObject;
var serializer = new XmlSerializer(typeof(MyObject));
using (var fileStream = new FileStream(path, FileMode.Open))
{
    myObject = (MyObject)serializer.Deserialize(fileStream);
}
MessageBox.Show(myObject.MyValue);