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

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

27.02.2013, 20:27. Показов 3965. Ответов 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
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
27.02.2013, 20:32
Во первых создайте единый метод для записи сообщения в файл, в который передавайте имя файла.
Во вторых, в конце цикла осуществите переход на новую строку в файле.
0
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109
27.02.2013, 20:59  [ТС]
Цитата Сообщение от CSharpCraft Посмотреть сообщение
Во первых создайте единый метод для записи сообщения в файл, в который передавайте имя файла.
Во вторых, в конце цикла осуществите переход на новую строку в файле.
а можно поподробнее как это сделать?
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
27.02.2013, 21:15
Цитата Сообщение от maxwel6064 Посмотреть сообщение
а можно поподробнее как это сделать?


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 sw;
            StreamWriter st;
            StreamWriter sk;
 
void Method()
{
    for (int j = 0; j < 4; j++)
                {
                    for (int i = 0; i < 20; i++)
                    {
 
                        if (label8.Text == "1")
                        {
                            WriteText(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#", "zona1.txt",sw);
                        }
                        
                        if (label8.Text == "2")
                        {
                            WriteText(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#", "zona2.txt",st);
                        }
                     
                        if (label8.Text == "3")
                        {
                            WriteText(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#", "zona3.txt",sk);
                        }
 
                        file.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                        
                        file.WriteLine();
                    }
                }
}
void WriteText(string data, string patch, StreamWriter wrt)
{
     FileInfo fi = new FileInfo(patch);
                            wrt= fi.AppendText();
                            wrt.Write(data);
                            wrt.Close();
}
Я не совсем уверен, но поробуйте
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.02.2013, 21:18
+"\n" припишите к каждой строке и не парьтесь
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
27.02.2013, 21:22
Цитата Сообщение от EvilFromHell Посмотреть сообщение
+"\n" припишите к каждой строке и не парьтесь
Тоже вариант
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.02.2013, 21:27
Кроме того StreamWriterы у вас как-то странно выглядят, открываются и закрываются вечно, если уж открываться и закрываться, то чем вам File.AppendAllText не угодило?)
0
311 / 309 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
27.02.2013, 21:28
Или все-таки заменить Write на WriteLine?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.02.2013, 21:30
Кстати да
0
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109
27.02.2013, 21:33  [ТС]
Если вы имели ввиду приписать +" \n" в таких строчках, наподобие:


C#
1
sw.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
, то данный метод не работает....
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
27.02.2013, 21:37
А еще лучше так сделать:

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
StreamWriter file = new StreamWriter("base.txt");
 
        void Method()
        {
            StreamWriter z1 = new StreamWriter("zona1.txt");
            StreamWriter z2 = new StreamWriter("zona2.txt");
            StreamWriter z3 = new StreamWriter("zona3.txt");
 
            for (int j = 0; j < 4; j++)
            {
                for (int i = 0; i < 20; i++)
                {
                    
                    if (label8.Text == "1")
                    {
                        z1.WriteLine(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                    }
 
                    if (label8.Text == "2")
                    {
                        z2.WriteLine(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                    }
 
                    if (label8.Text == "3")
                    {
                        z3.WriteLine(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                    }
 
                    file.WriteLine(dataGridView1.Rows[i].Cells[j].Value.ToString() + "#");
                }
            }
 
            z1.Close();
            z2.Close();
            z3.Close();
        }
1
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.02.2013, 21:37
Быть такого не может Оно работает, вот только иногда блокнот об этом не знает, а если в другом редакторе открыть или читать программно все норм
0
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109
27.02.2013, 21:52  [ТС]
Воспользовался советом и переписал код по совету CSharpCraft, однако два блокнота Notepad(стандартный Windows блокнот) и Notepad++ интерпретируют выведенные предложения по-разному..... К сожалению, данный способ наверное мне не подойдет, т.к. затем нужно будет программно считывать файл и добавлять вновь в новый datagridview....
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
27.02.2013, 22:16
Цитата Сообщение от maxwel6064 Посмотреть сообщение
Воспользовался советом и переписал код по совету CSharpCraft, однако два блокнота Notepad(стандартный Windows блокнот) и Notepad++ интерпретируют выведенные предложения по-разному..... К сожалению, данный способ наверное мне не подойдет, т.к. затем нужно будет программно считывать файл и добавлять вновь в новый datagridview....
Объясните подробнее что вам нужно
0
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109
27.02.2013, 22:30  [ТС]
В общем, у меня есть своеобразное меню для ресторана. Есть категории с блюдами. По нажатию на кнопку "заказать" блюда попадают в корзину. После каждого(за исключением повторяющихся блюд) нажатия на кнопку появляется новая строка в datagridview. При переходе в корзину информация о блюдах попадает в файл. Нужно, чтобы блюда в корзине, каждая строчка(в строчке указана цена, название, количество и сумма) писалась бы на отдельной строке для удобного прочтения затем в datagridview. Три файла у меня создано потому, что ресторан разделен на спец.зоны, в одной 5 столов, в другой 5, в третьей 6. Номер столов у меня генерируется автоматически и затем в зависимости от зоны и столика, вся информация о заказанных блюдах должна попадать в специальные файлы, равные номеру зоны.
В моем случае большая часть кода написана, я выложил ту часть кода, где возникли проблемы. Но, к сожалению, решить это не удалось....
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
27.02.2013, 22:33
Цитата Сообщение от maxwel6064 Посмотреть сообщение
В общем, у меня есть своеобразное меню для ресторана. Есть категории с блюдами. По нажатию на кнопку "заказать" блюда попадают в корзину. После каждого(за исключением повторяющихся блюд) нажатия на кнопку появляется новая строка в datagridview. При переходе в корзину информация о блюдах попадает в файл. Нужно, чтобы блюда в корзине, каждая строчка(в строчке указана цена, название, количество и сумма) писалась бы на отдельной строке для удобного прочтения затем в datagridview. Три файла у меня создано потому, что ресторан разделен на спец.зоны, в одной 5 столов, в другой 5, в третьей 6. Номер столов у меня генерируется автоматически и затем в зависимости от зоны и столика, вся информация о заказанных блюдах должна попадать в специальные файлы, равные номеру зоны.
В моем случае большая часть кода написана, я выложил ту часть кода, где возникли проблемы. Но, к сожалению, решить это не удалось....
Теперь понятно.
Завтра скину другой код, возможно он вам поможет
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
27.02.2013, 23:41
Я если честно ничего не пойму. Если вам надо считывать файл программно, то какая вам разница, как он выглядит в блокноте? Указанные выше способы работают корректно в случае считывания программно, это просто глюк виндовского блокнота. У меня такое сделано в нескольких проектах, там сохранение настроек так работает.
0
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109
28.02.2013, 08:15  [ТС]
Цитата Сообщение от EvilFromHell Посмотреть сообщение
Я если честно ничего не пойму. Если вам надо считывать файл программно, то какая вам разница, как он выглядит в блокноте? Указанные выше способы работают корректно в случае считывания программно, это просто глюк виндовского блокнота. У меня такое сделано в нескольких проектах, там сохранение настроек так работает.
понимаете, в одной программе я генерирую (создаю) файл с информацией о блюдах, а во второй программе получаю данные из этих файлов. Пробовал сгенерированный файл переносить к той программе, которая должна считывать из файла в datagridview, результат отрицательный, отображается не так, как нужно.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
28.02.2013, 12:22
Цитата Сообщение от maxwel6064 Посмотреть сообщение
понимаете, в одной программе я генерирую (создаю) файл с информацией о блюдах, а во второй программе получаю данные из этих файлов. Пробовал сгенерированный файл переносить к той программе, которая должна считывать из файла в datagridview, результат отрицательный, отображается не так, как нужно.
Значит вторая программа элементарно неправильно читает-вот и все.
0
3 / 3 / 0
Регистрация: 13.11.2012
Сообщений: 109
28.02.2013, 12:29  [ТС]
А вот часть кода из моей второй программы:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 string[] arr = System.IO.File.ReadAllLines("zona1.txt");
            if (arr.Length == 0) return;
            DataTable tbl = new DataTable();
            string[] temp;
            temp = arr[0].Split("#".ToCharArray());
            for (int i = 0; i < temp.Length; i++)
            {
                tbl.Columns.Add(temp[i]);
            }
 
            for (int i = 1; i < arr.Length; i++)
            {
                DataRow dr = tbl.NewRow();
                dr.ItemArray = arr[i].Split("#".ToCharArray());
                tbl.Rows.Add(dr);
            }
            dataGridView1.DataSource = tbl;
Что здесь тогда может быть неправильно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.02.2013, 12:29
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru