保存文件并将其读入数据表-C#

时间:2019-04-18 21:57:05

标签: c# visual-studio datatable

我对此很陌生,所以请耐心等待。 我正在尝试创建一个可以打开文件,加载文件然后将数据填充到表中的应用程序。 我已经设法将其硬编码到所需的测试文件中,但是现在需要能够打开具有相同扩展名的任何文件。

到目前为止,我已经包含了代码。 欣赏是否有人可以指出我正确的方向:) 谢谢,乔

   OpenFileDialog ofd = new OpenFileDialog();

   private void Button3_Click(object sender, EventArgs e)
   {
       ofd.Filter = "evtx|*.evtx"; //Only allows evtx file types to be seen and opened 
       if (ofd.ShowDialog() == DialogResult.OK) //Opens the file dialog on button click
       {
           this.fileNameTextBox.Text = ofd.FileName;
           saveFileNameTextBox.Text = ofd.SafeFileName;                
       }
   }

   private void loadFileButton_Click(object sender, EventArgs e)
   {
       var dt = new DataTable();
       dt.Columns.Add("Level");
       dt.Columns.Add("Logname");
       dt.Columns.Add("Event ID");
       dt.Columns.Add("Date and Time");

       using (var reader = new EventLogReader(@"C:\Users\Jason\Desktop\Event logs\Security.evtx", PathType.FilePath))
       {
           EventRecord record;
           while ((record = reader.ReadEvent()) != null)
           {
               using (record)
               {                       
                   dt.Rows.Add(record.Level, record.LogName, record.RecordId, record.TimeCreated.Value.ToString("dd/MM/yyyy tt:hh:mm:ss"));              
               }
           }
       }

       tblLogViewer.DataSource = dt;
   }

1 个答案:

答案 0 :(得分:2)

如果我了解您的问题所在,则提示您在Button3_Click()中输入文件...

if (ofd.ShowDialog() == DialogResult.OK) //Opens the file dialog on button click
{
    this.fileNameTextBox.Text = ofd.FileName;
    saveFileNameTextBox.Text = ofd.SafeFileName;                
}

...但是随后在loadFileButton_Click()中,您正在使用另一条路径来构建EventLogReader ...

using (var reader = new EventLogReader(@"C:\Users\Jason\Desktop\Event logs\Security.evtx", PathType.FilePath))
{

您已经将所选文件的路径保存到fileNameTextBox.Text,所以只需将该属性传递给EventLogReader构造函数...

using (var reader = new EventLogReader(fileNameTextBox.Text, PathType.FilePath))
{

请注意,loadFileButton_Click假定ofd先前已显示并接受(未取消)。不知道您的不同按钮是什么,最好在成功提示输入文件后立即创建并使用EventLogReader ...

if (ofd.ShowDialog() == DialogResult.OK) //Opens the file dialog on button click
{
    this.fileNameTextBox.Text = ofd.FileName;
    saveFileNameTextBox.Text = ofd.SafeFileName;                

    using (var reader = new EventLogReader(ofd.FileName, PathType.FilePath))
    {
        // Use reader...
    }
}