С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 126

Загрузка данных из файла в таблицу DataGridView

12.07.2018, 14:31. Показов 4574. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Вот я сохранил таблицу в текстовый файл:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SaveFileDialog dialog = new SaveFileDialog();
            dialog.Filter = "Text File|*.txt";
            var result = dialog.ShowDialog();
            if (result != DialogResult.OK)
                return;
 
            // setup for export
            grid.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
            grid.SelectAll();
            // hiding row headers to avoid extra \t in exported text
            var rowHeaders = grid.RowHeadersVisible;
            grid.RowHeadersVisible = false;
 
            // ! creating text from grid values
            string content = grid.GetClipboardContent().GetText();
 
            // restoring grid state
            grid.ClearSelection();
            grid.RowHeadersVisible = rowHeaders;
 
            System.IO.File.WriteAllText(dialog.FileName, content);
            MessageBox.Show(@"Text file was created.");
А как её теперь загрузить обратно? Помогите с кодом пожалуйста!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.07.2018, 14:31
Ответы с готовыми решениями:

Загрузка файла TXT в таблицу dataGridView
Передаю файл TXT в в таблицу dataGridView, но к сожалению не сохраняется форматирование. Как его сделать? Не сохраняется перенос по...

Загрузка данных из файла Excel в DataGridView
Здравствуйте! Есть проблема. Программа по нажатию кнопки на форме, должна считать файл Excel и поместить данные в датагрид на форме....

Передача данных из файла *CSV в таблицу dataGridView
У меня в программе все данные из файла с расширением *CSV отображаются только в первом столбце dataGridView. Что не так в коде, чтобы...

11
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
12.07.2018, 17:12
Почему именно так сохраняешь? Использование буфера обмена без ведома пользователя, у которого там может что-то находиться, — это моветон.
ты получаешь текстовый файл с разделителями по табуляции, каждая строка файла — отдельные строки таблицы.
0
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 126
13.07.2018, 07:55  [ТС]
Помогите пожалуйста тогда, как лучше сделать. Я хочу таблицу сохранить в файл, а потом ее обратно загружать через диалоговое окно.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
13.07.2018, 10:13
Откуда берутся данные в таблице?
0
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 126
13.07.2018, 16:24  [ТС]
Из секундомера, он замеряет время круга по нажатию на кнопку

Добавлено через 1 минуту
Вот я сохранил в текстовый файл, а как теперь загрузить, помогите с кодом.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
SaveFileDialog save = new SaveFileDialog();
            save.FileName = "Results.txt";
            save.Filter = "Text File | *.txt";
            if (save.ShowDialog() == DialogResult.OK)
            {
                StreamWriter file = new StreamWriter(save.OpenFile());
                try
 
                {
                    for (int i = 0; i < grid.RowCount; i++)
                    {
                        for (int j = 0; j < grid.ColumnCount; j++)
                        {
                            file.Write(grid.Rows[i].Cells[j].Value.ToString() + " ");
                        }
                        file.WriteLine();
                    }
                    file.Flush();
                    file.Close();
                    file.Dispose();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    file.Close();
                }
            }
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
13.07.2018, 17:43
soberfrog, дело не в том, как ты сохраняешь, а как данные представлены в программе. В твоём случае — никак не представлены. Покажи как добавляешь в dgv
0
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 126
13.07.2018, 17:46  [ТС]
C#
1
2
3
4
5
6
7
 private void AddNoteToGrid()
        {
            int row = grid.Rows.Count;
            grid.Rows.Add();
            grid["coStarts", row].Value = start.ToString("yyyy-MM-dd HH:mm");
            grid["coTimer", row].Value = label1.Text;
        }
0
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 126
13.07.2018, 17:56  [ТС]
вот так выглядят данные и таблица(в таблице две колонки)
Миниатюры
Загрузка данных из файла в таблицу DataGridView  
0
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 126
13.07.2018, 18:05  [ТС]
Вот с помощью такого кода почти вывел. Только в бок все ушло ( что исправить чтобы норм было?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 grid.Rows.Clear();
 
            OpenFileDialog opd = new OpenFileDialog();
            openFileDialog1.Filter = "Text File | *.txt";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string filename = openFileDialog1.FileName;
 
                StreamReader file = new StreamReader(filename);
                
                DataTable dt = new DataTable();
           
 
                var table = new DataTable();
                var lines = File.ReadAllLines(filename);
                if (lines.Count() > 0)
                {
                    foreach (var columnName in lines.FirstOrDefault()
                        .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))
                    {
                        table.Columns.Add(columnName);
                    }
                    foreach (var cellValues in lines.Skip(1))
                    {
                        var cellArray = cellValues
                            .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                        if (cellArray.Length == table.Columns.Count)
                            table.Rows.Add(cellArray);
                    }
                }
              
                grid.DataSource = table;
            }
Миниатюры
Загрузка данных из файла в таблицу DataGridView  
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
13.07.2018, 21:19
soberfrog, похоже ты собираешь куски кода из разных мест и единого понимания как должно быть у тебя нет.
В последнем коде ты хоть понимаешь, что происходит? Как именно данные попадают из текстового файла в dgv?
Там используется DataTable — удобная вещь для хранения данных в памяти во время выполнения программы. Но чтобы было ещё удобнее, сохранять нужно тоже DataTable, а для этого твои показания секундомера нужно добавлять не напрямую в dgv, а в DataTable, которую назначать в DataSource.

Добавлено через 2 минуты
Цитата Сообщение от soberfrog Посмотреть сообщение
Только в бок все ушло ( что исправить чтобы норм было?
Потому что у тебя, видимо, в dgv уже есть столбцы, а ты ещё биндишь DataTable, вот и добавляются новые. Можно избежать этого, если для столбцов dgv указать в свойстве DataPropertyName имя столбца из DataTable, которая назначается в DataSouce
0
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 126
14.07.2018, 09:14  [ТС]
Спасибо конечно, но я мало что понял из Вами сказанного. Изначально я просил с кодом помочь, если не трудно, так как я начинающий в этом деле, а так хоть пойму свои ошибки и будет над чем поразбираться.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
14.07.2018, 14:08
soberfrog, разбирайся.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using System;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
 
namespace StopWatchSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Init();
        }
 
        private void Init()
        {
            label1.Text = "--:--";
            _stopWatch = new Stopwatch();
            _dataTable = new DataTable("stopwatches");
            _dataTable.Columns.AddRange(new DataColumn[]
            {
                new DataColumn("Date",typeof(DateTime)),
                new DataColumn("Time", typeof(TimeSpan))
            });
            _timer = new Timer() { Interval = 100 };
            _timer.Tick += _timer_Tick;
        }
 
        private void _timer_Tick(object sender, EventArgs e)
        {
            label1.Text = _stopWatch.Elapsed.ToString(@"mm\:ss\.ff");
        }
 
        private Stopwatch _stopWatch;//Секундомер
        private DataTable _dataTable;//Таблица с данными
        private Timer _timer;//Таймер отсчёта
 
        private void startButton_Click(object sender, EventArgs e)
        {
            _timer.Start();
            _stopWatch.Start();
        }
 
        private void stopButton_Click(object sender, EventArgs e)
        {
            Stop();
        }
 
        private void Stop()
        {
            _timer.Stop();
            _stopWatch.Stop();
            PutDataToDataGridView();
        }
        //Помещение данных в DGV
        private void PutDataToDataGridView()
        {
            _dataTable.LoadDataRow(new object[] { DateTime.Now, _stopWatch.Elapsed }, true);
            resultsDgv.DataSource = null;
            resultsDgv.DataSource = _dataTable;
        }
 
        private void restartButton_Click(object sender, EventArgs e)
        {
            PutDataToDataGridView();
            _stopWatch.Restart();
        }
 
        private void saveButton_Click(object sender, EventArgs e)
        {
            if (_timer.Enabled)
                Stop();
            using (var dialog = new SaveFileDialog())
            {
                dialog.Filter = "Файлы секундомера|*.sw";
                if (dialog.ShowDialog(this) != DialogResult.OK)
                    return;
                using (var stream = new StreamWriter(dialog.FileName))
                {
                    _dataTable.WriteXml(stream);
                }
            }
        }
 
        private void openButton_Click(object sender, EventArgs e)
        {
            using (var dialog = new OpenFileDialog())
            {
                dialog.Filter = "Файлы секундомера|*.sw";
                if (dialog.ShowDialog(this) != DialogResult.OK)
                    return;
                using (var stream = new StreamReader(dialog.FileName))
                {
                    _dataTable.ReadXml(stream);
                }
                PutDataToDataGridView();
            }
        }
    }
}
Вложения
Тип файла: zip StopWatchSample.zip (11.9 Кб, 14 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2018, 14:08
Помогаю со студенческими работами здесь

Загрузка данных из файла и вставка в таблицу выдает ошибку
Всем добрый день!!!Пишу программу по чуть чуть, в ней есть таблица и кнопка загрузки данных,после нажатия и выбора файла с расширение xlsx,...

Загрузка Txt файла в DataGridView
Здарова народ помогите пожалуйста, нужно считать прикреплённый файл в DataGridVeiw, проблема для меня заключаться в том что с 5 по 103...

Загрузка файла Excel в DataGridView
Всем привет! Столкнулся с очень интересной задачей, у меня не получается загрузить файл good.xls в DGV, получилось лишь с открытым...

Загрузка данных БД в DataGridView
Привет всем! Нужно помощь, у меня есть аксес с данными, как быстро откивает базу на dgv.

Загрузка содержимого текстового файла в dataGridView
Ув. форумчане, столкнулся с несложной на первый взгляд проблемой. Допустим есть 2 файла 1.txt и 2.txt со следующим содержимым: 1.txt ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru