Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109

Построчная запись в файл из DataGridView

27.02.2013, 20:27. Показов 4105. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Пишу код с помощью с#. Программа должна вписывать в файл определенный текст.
Вот мой код:
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
 StreamWriter file = new StreamWriter("base.txt");
            StreamWriter sw;
            StreamWriter st;
            StreamWriter sk;
 
 
            try
            {
 
                for (int i = 0; i < 20; i++)
                {
                    for (int j = 0; j < 4; j++)
                    {
 
                        if (label8.Text == "1")
                        {
                            
                            FileInfo fi = new FileInfo("zona1.txt");
                            sw = fi.AppendText();
                            sw.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                            sw.Close();
                        }
                        
                        if (label8.Text == "2")
                        {
                            
                            FileInfo fi = new FileInfo("zona2.txt");
                            st = fi.AppendText();
                            st.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                            st.Close();
                        }
                     
                        if (label8.Text == "3")
                        {
                           
                            FileInfo fi = new FileInfo("zona3.txt");
                            sk = fi.AppendText();
                            sk.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                            sk.Close();
                        }
 
                        file.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                        
                    }
 
                    file.WriteLine();
                }
            }
 
            catch
            {
            }
 
            finally
            {
                file.Close();
            }
Проблема состоит в том, что если в датагридвью добавлено больше 1 строчки, программа записывает в файлы все в одну строку,а мне нужно, чтобы каждая строка в программе была добавлена на новую строку в файлах тхт. Надеюсь, вы поняли, что я имел в виду. Буду рад любой помощи. Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2013, 20:27
Ответы с готовыми решениями:

Построчная запись слов в файл
Напишите программу, которая создает текстовый файл с указанным пользователем именем и записывает в него построчно набранные пользователем в...

Построчная запись в txt файл из разных потоков
Есть 4 потока (threads), мне нужно данные от них записать в тхт файл(построчно). Как это сделать ? Я юзаю File.WriteAllText, но может это...

Datagridview построчная запись
Всем форумчанам привет такая задачка: из массива файлов excel нужно считать и поместить в datagridview значения нескольких ячеек. один...

33
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
28.02.2013, 12:48
Студворк — интернет-сервис помощи студентам
Не пойму ,зачем вам символ #. Опишите словами, как вы хотите, чтобы dataGridView1 выглядел после прочтения с файла?
0
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109
28.02.2013, 12:54  [ТС]
Символ решетки необходим, чтобы программа смогла разделить каждую категорию.
В файл записывается следующее:
1 строчка считается названием категорий:
Блюдо#количество#цена#общая сумма
Затем оставшиеся строчки:
Например:
Блины#1#25#25#
Таким образом программа должна понимать и добавлять в таблицу, основываясь на количестве решеток. Сколько категорий, такое же число решеток.
Вообще файл должен выглядить следующим образом:
Блюдо#количество#цена#общая сумма:
Блины#1#25#25#
Блины#1#25#25#
Блины#1#25#25#
Блины#1#25#25#
И после прочтения в новой программе из файла в датагридвью должны соответственно отобразиться строки из начальных файлов.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
28.02.2013, 13:11
C#
1
z2.WriteLine(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
А раньше все это вместе было в одной ячейке, да? кроме того в конце строки все равно не понимаю зачем #.

Добавлено через 3 минуты
Кроме того ,почему бы не обращаться к ячейкам напрямую, а не через DataTable, если вы раньше с них напрямую читали? Это конечно не принципиально важно, просто смысла не пойму.

Добавлено через 6 минут
Кроме того, я не пойму зачем вообще отрывались 3 StreamWritera, текст в label8.Text быстро меняется что-ли?

Добавлено через 3 минуты
C#
1
2
3
4
           for (int j = 0; j < 4; j++)
            {
                for (int i = 0; i < 20; i++)
                {
Это тоже меня удивляет, можно же забить туда свойства dataGridView1 ( в первом коде) и не будет ничего падать, если вы их поменяете.
0
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109
28.02.2013, 13:13  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
C#
1
z2.WriteLine(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
А раньше все это вместе было в одной ячейке, да? кроме того в конце строки все равно не понимаю зачем #.

Добавлено через 3 минуты
Кроме того ,почему бы не обращаться к ячейкам напрямую, а не через DataTable, если вы раньше с них напрямую читали? Это конечно не принципиально важно, просто смысла не пойму.

Добавлено через 6 минут
Кроме того, я не пойму зачем вообще отрывались 3 StreamWritera, текст в label8.Text быстро меняется что-ли?

Добавлено через 3 минуты
C#
1
2
3
4
           for (int j = 0; j < 4; j++)
            {
                for (int i = 0; i < 20; i++)
                {
Это тоже меня удивляет, можно же забить туда свойства dataGridView1 ( в первом коде) и не будет ничего падать, если вы их поменяете.
да. все выводит в один столбик. label8 меняется в зависимости от label7.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
28.02.2013, 14:17
Блины#1#25#25#
Блины#1#25#25#
Блины#1#25#25#
Блины#1#25#25#

У вас же файл будет выглядеть как угодно, беря разные коды ваши и вам предложенные, но только не так.

Добавлено через 22 секунды
Сейчас попробую предположить, как должен был выглядеть код.

Добавлено через 34 минуты
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
            StreamWriter file = new StreamWriter("base.txt");
            StreamWriter z1;
            switch(label8.Text){
            case "1":
            z1 = new StreamWriter("zona1.txt");
            break;
            case "2":
            z1 = new StreamWriter("zona2.txt");
            break;
            case "3":
             z1 = new StreamWriter("zona3.txt");
             break;
             default:
             z1 = new StreamWriter("zona1.txt");
             break;
            }
 
 
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                for (int j = 0; j < dataGridView1.ColumnCount-1; j++)
                {
                    if (dataGridView1.Rows[i].Cells[j].Value != null)
                    {
                        z1.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                        file.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                    }
                    else {z1.Write("Empty" + "#");file.Write("Empty" + "#");}
                }
 
                if (dataGridView1.Rows[i].Cells[dataGridView1.ColumnCount - 1].Value != null)
                {
                    z1.Write(dataGridView1.Rows[i].Cells[dataGridView1.ColumnCount - 1].Value.ToString() + "\n");
                    file.Write(dataGridView1.Rows[i].Cells[dataGridView1.ColumnCount - 1].Value.ToString() + "\n");
                }
                else { z1.Write("Empty" + "\n"); file.Write("Empty" + "\n"); }
 
            }
            z1.Close();
            file.Close();
Так может? Только последний # я ставить не стал, ибо не совсем понимаю зачем он. И стрим райтеры-зачем их столько? если я что не понял-поправьте.

Добавлено через 19 минут
Да, и зачем вам 2 файла которые оба перезаписываются? Нигде смены текста на лейбле я в коде не увидел, в файлах будет ровно одно и то же.
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
28.02.2013, 14:38
Код для записи данных в файл:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void WriteData(int zona)
        {
            StreamWriter baseWriter = new StreamWriter("base.txt");
            StreamWriter  zone = new StreamWriter("zona"+zona+".txt");
 
            for (int strings = 0; strings < dataGridView1.RowCount; strings++)
            {
                string data = "";
 
                for (int cl = 0; cl < dataGridView1.ColumnCount - 1; cl++)
                {
                    data += dataGridView1.Rows[strings].Cells[cl].Value.ToString();
                }
 
                zone.WriteLine(data);
                baseWriter.WriteLine(data);
            }
 
            baseWriter.Close();
            zone.Close();
        }
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
28.02.2013, 14:53
Код для записи данных в файл:
и какое этот код отношение имеет к тому, что выше? что в метод можно засунуть и подавать туда int-это понятно, а все остальное просто-напросто ошибочно, ибо вы невнимательно читали.
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
28.02.2013, 15:16
Цитата Сообщение от EvilFromHell Посмотреть сообщение
и какое этот код отношение имеет к тому, что выше? что в метод можно засунуть и подавать туда int-это понятно, а все остальное просто-напросто ошибочно, ибо вы невнимательно читали.
Изначально (насколько я понял) речь шла о том, что некорректно записывались данные в файл.
Это более простой и эффективный вариант.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
28.02.2013, 15:24
Цитата Сообщение от CSharpCraft Посмотреть сообщение
Изначально (насколько я понял) речь шла о том, что некорректно записывались данные в файл.
Это более простой и эффективный вариант.
Прочитайте мой код, свой код, код и пожелания ТС- и вы поймете, что пишите бред

Добавлено через 1 минуту
А если точнее: ваш код не делит ничего при помощи #, не пишет последнюю ячейку в файл и вылетает, если какая-то ячейка не заполнена.
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
28.02.2013, 15:25
Цитата Сообщение от EvilFromHell Посмотреть сообщение
Прочитайте мой код, свой код, код и пожелания ТС- и вы поймете, что пишите бред

Добавлено через 1 минуту
А если точнее: ваш код не делит ничего при помощи #, не пишет последнюю ячейку в файл и вылетает, если какая-то ячейка не заполнена.
Пусть будет по вашему.
0
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109
28.02.2013, 16:18  [ТС]
Огромное всем спасибо. Теперь код отлично работает. А возможно ли сделать какой-нибудь фильтр в datagridview? к примеру, по 1 столбику? Вот что я имею в виду:

Номер#Цена#Название#Количество#сумма
1#15#Блины#1#15
1#15#Макароны#1#15
2#25#Салат#1#25

Чтобы при фильтре по первому столбику отображались, взяв допустим число 1, все данные, относящиеся к этой цифре, фильтровались бы именно по ней.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
28.02.2013, 16:43
Не пойму вас, что вы называете фильтром и что значит "фильтровались"? Отображались только те, что с определенной цифрой в определенном столбце? но в примере же не так.. Или просто сортировать?
0
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109
28.02.2013, 16:59  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
Не пойму вас, что вы называете фильтром и что значит "фильтровались"? Отображались только те, что с определенной цифрой в определенном столбце? но в примере же не так.. Или просто сортировать?
нужно еще дополнительно, как в excel, отфильтровать данные по первому столбцу.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
28.02.2013, 17:40
Я не пользуюсь экселем Если загадочное слово "отфильтровать" означает отсортировать, то наверное как-то так:
C#
1
dataGridView1.Sort(нужный столбец,ListSortDirection.Ascending);
Если это не то, то поясните пожалуйста попонятнее

Добавлено через 37 минут
Кстати в предыдущем коде я тоже ступил:
C#
1
dataGridView1.Rows[i].Cells[j].Value.ToString()
заменить надо на просто
C#
1
dataGridView1.Rows[i].Cells[j].Value
И не будет вылетать при нуле, проверку можно убрать если не нужна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.02.2013, 17:40

Построчная запись в файл
что делать если в текстовом файле получается запись данных на одной строке постоянно?? например когда я ввожу какое либо значение текст...

Построчная запись в файл
Написал прогу. Вводится текст с клавиатуры. При нажатии на ентер, переводится на новую строку и записывается в файл. Если пустая строка -...

Построчная запись из List в файл
У меня проблемы с работой с файлами и поэтому это вызывает у меня трудности. У меня уже есть полный код ежедневника. Мне нужно чтобы...

Построчная запись из List в файл (GUI)
У меня проблемы с работой с файлами и поэтому это вызывает у меня трудности. У меня уже есть полный код ежедневника. Мне нужно чтобы...

Построчная запись в текстовый файл, полученной погоды
Вот код для получения погоды на сегодня и на 5 дней вперед (каждые 3 часа). import pyowm owm = pyowm.OWM('Мой ключ') ...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru