asp.net Web表单输入到CSV文件

本文关键字:CSV 文件 输入 表单 net Web asp | 更新日期: 2023-09-27 18:10:03

我在asp中创建了一个web表单。. NET,不幸的是,由于一些限制(内部),我没有能够使用SQL的乐趣。我有一个想法,每次用户单击提交时都将数据导出到CSV文件。

这样做的目的是为了让我们有一个计算机名称、安装的软件、序列号等的列表,以便跟踪。

我从来没有做过这样的事情,因为我习惯了SQL(初学者水平),这是可能的,我怎么做(在代码形式)。我已经谷歌它和所有我得到的是网格视图和其他形式,我不想使用,甚至那些似乎比我想做的更复杂。如有任何帮助,不胜感激。

我使用c#后端来编写此代码。

澄清一下,这将是一个单一的CSV文件在我们的网络上,这个web表单将只在内部使用。所以每次有人点击提交按钮时,它都会向同一个CSV文件添加一个新的"行"。最后,我们得到了一个CSV文件,其中包含计算机名和其他信息的列表。

asp.net Web表单输入到CSV文件

通常您有一个表示数据的模型类。这里有一个:

public class Computer
{
    public string SerialNumber {get; set;}
    public string Name {get; set;}
    public List<string> InstalledSoftware {get; set;}
}

现在您有了一个可以表示数据的类,接下来就是保存或序列化它的问题了。您无法访问SQL Server数据库。这很好。还有其他选择。您可以将其存储在结构化文件格式中。CSV不适用于此,因为您可能在每台计算机上有多个InstalledSoftware,并且很难使用CSV正确处理此问题。但是其他基于文本的格式(如XML和JSON)非常适合此操作。你也可以使用"NoSQL"类型的数据库,如MongoDB或RavenDB。你也可以使用SQLite,它是非常轻量级的。

让我们从一些示例数据开始。

List<Computer> computers = new List<Computer>();
computers.Add(new Computer(){
    SerialNumber="ABC123",
    Name="BOB-LAPTOP",
    InstalledSoftware = new List<string>(){
        "Notepad", "Visual Studio", "Word"
    }
});
computers.Add(new Computer(){
    SerialNumber="XYZ456",
    Name="JASON-WORKSTATION",
    InstalledSoftware = new List<string>(){
        "Notepad++", "Visual Studio Code", "Word"
    }
});
computers.Add(new Computer(){
    SerialNumber="LMN789",
    Name="NANCY-SURFACE3",
    InstalledSoftware = new List<string>(){
        "Outlook", "PowerPoint", "Excel"
    }
});

那么它只是一个保存数据的问题。让我们试试XML:

var xmlSerializer = new XmlSerializer(typeof(Computer));       
using(var stringWriter = new StringWriter())
{
    using (var xmlWriter = XmlWriter.Create(stringWriter))
    {
        xmlSerializer .Serialize(writer, computers);
        var xml = stringWriter.ToString();
        File.WriteAllText(Server.MapPath("~/App_Data/computers.xml"));
    }
}

或使用JSON:

var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(computers);
File.WriteAllText(Server.MapPath("~/App_Data/computers.json"));
使用MongoDB:

var client = new MongoClient(connectionString);  
var server = client.GetServer();  
var database = server.GetDatabase("ComputerDB");  
var computerCollection= database.GetCollection<Computer>("Computers");
foreach(var computer in computers)
{  
    computerCollection.Insert(computer);
} 
注意,我用而不是测试了这段代码。可能有bug。我的目标是给你一个起点,不一定是100%的工作代码。我有一段时间没有序列化XML了,我通常使用JSON。. NET而不是内置的JavaScriptSerializer。 还要注意,如果存在任何两个用户可能同时访问数据的可能性,则需要注意XML和JSON方法,以避免两个人同时尝试写入文件。这就是MongoDB更好的地方,但是你必须在某个地方安装服务器软件。