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

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

27.02.2013, 20:27. Показов 4150. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru