Сохранение и чтение файла в таблицу данных - C # - PullRequest
0 голосов
/ 19 апреля 2019

Я новичок в этом, так что терпите меня.Я пытаюсь создать приложение, которое может открыть файл, загрузить его, а затем заполнить данные в таблицу.Мне удалось жестко закодировать его в тестовый файл, который я хотел, но теперь мне нужно открыть любой файл с таким же расширением.

Код, который у меня есть, включен.Спасибо, если кто-то может указать мне правильное направление :) Спасибо, Джо

   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 Ответ

2 голосов
/ 19 апреля 2019

Если я понимаю, в чем ваша проблема, вы запрашиваете файл в 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...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...