Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/26: Рейтинг темы: голосов - 26, средняя оценка - 4.58
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62

Сохранение DataGridView1 в txt и наоборот

05.12.2011, 19:15. Показов 5100. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно таблицу dataGridView1 перенести в текстовый файл, и обратная манипуляция из txt файла заполнить dataGridView1
C#
1
2
3
4
5
6
7
8
9
10
string result;
for (int a=0;a<20;a++)
{
for (int b=0;b<20;b++)
result= this.dataGridView1.Rows[a].Cells[b].Value.ToString();
StreamWriter sw = new StreamWriter("name.txt");
sw.WriteLine(result);
sw.Close();
}
}
(создать бекап, потом востановить из него)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2011, 19:15
Ответы с готовыми решениями:

Перенос данных таблицы из DataGridView1 в DataGridView2 и наоборот при нажатии кнопки (2)
Вновь возник вопрос касательно dataGridView. Мне по задаче нужно сделать перенос информации из dataGridView1 в dataGridView2 при нажатии на...

Как брать числа из списка .txt и сохранение в другой .txt ?
Приветствую Всех Друзья! Не силен в Пайтоне, но нужно изменить код. В этом скрипте есть формула где в начале задаются числы x1 и x2 в...

Сохранение данных с ListView в .txt и загрузка с .txt
Сохранение данных с ListView в .txt и загрузка с .txt Помогите.

9
 Аватар для Sanprof
96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
06.12.2011, 10:44
partos1, пользуйтесь xml, как раз он хорош для сохранения и восстановления различной информации, в тем более там используются стандарты, которые предотвращают неправильное считывание информации, либо ее потери.
1
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
06.12.2011, 14:22
Как-то так
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
//Читать из фаила в DataGridView
 private void _Write_from_File_To_Grid(string Config_Unit_File_FullPath)
 
        {
            
            dataGridView1.Rows.Clear();
            string inpstr;
            if (File.Exists(Config_Unit_File_FullPath))
 
            {
 
                StreamReader rd = new StreamReader(Config_Unit_File_FullPath);
                string[] str;
                char[] delim = new char[] { ' ' };//Разделители
                rd.ReadLine();  //title
                int count=0;
 
                
                while ((inpstr = rd.ReadLine()) != null)
                {
                    str = new string[inpstr.Split(delim).Length + 1]; 
                    for (int i = 1; i < str.Length; ++i)
                    {
                        str[i] = inpstr.Split(delim)[i - 1];
                       
                    }
                    dataGridView1.Rows.Add(str);
                     
                    ++count;
                   
                }
                rd.Close();
 
            }
            else
            {
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    dataGridView1.Rows[0].Cells[0].Value = dataGridView1.Rows.Count.ToString();
 
                }
            }
  }
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
        private void _WriteDatafrom_DataGridViewToFile(string Config_Unit_File_FullPath)
        {
 
 //Записать DatadGridView в файл
 
            FileStream wStream = new FileStream(Config_Unit_File_FullPath, FileMode.Create, FileAccess.Write);
            StreamWriter file = new StreamWriter(wStream);
 
            try
            {
                
                for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    for (int j = 1; j < dataGridView1.ColumnCount; j++)
                    {
                        file.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + " ");
                    }
 
                    file.WriteLine();
                }
            }
 
            catch(Exception e1)
            {
                MessageBox.Show(e1.Message);
            }
            
            finally
            {
                file.Close();
            }
        }
Но вообще-то работать с XML, как Вам тут посоветовали ,было бы правильнее
1
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
06.12.2011, 18:15  [ТС]
а если выгружать в xml файл то как должен выглядеть скрипт

(таблица будет 15х9)
0
 Аватар для Sanprof
96 / 96 / 16
Регистрация: 28.01.2008
Сообщений: 426
06.12.2011, 18:28
Цитата Сообщение от partos1 Посмотреть сообщение
а если выгружать в xml файл то как должен выглядеть скрипт
могу вам посоветовать почитать о XmlDocument в MSDN-e там достаточно хорошо написано.
Я бы мог помочь вам, но к сожалению я щас пока занят.
0
2 / 2 / 2
Регистрация: 14.11.2010
Сообщений: 62
06.12.2011, 19:31  [ТС]
подскажите где я ошибся
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
string datewrite, rowds,cellds;
            XmlTextWriter xmlWriter = new XmlTextWriter("newbooks.xml", System.Text.Encoding.UTF8);
            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.WriteStartDocument(false);
            for (int rowd = 1; rowd < this.dataGridView1.RowCount; rowd++)
            {
                rowds = "rowd" + rowd;
                xmlWriter.WriteStartElement(rowds, null);
                for (int celld = 0; celld < this.dataGridView1.ColumnCount; celld++)
                {
                    cellds = "celld" + celld;
                    datewrite = this.dataGridView1.Rows[rowd].Cells[celld].Value.ToString();
                    xmlWriter.WriteElementString(cellds, datewrite);                    
                }
                xmlWriter.WriteEndElement();
            }
            xmlWriter.Close();
ссылаеся на строчку
C#
1
xmlWriter.WriteStartElement(rowds, null);
ошибка Знак StartElement в состоянии Epilog вызовет получение недопустимого документа XML.
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
06.12.2011, 19:39
Если текстовый файл имеет понятную структуру типа как csv, то к нему можно подключить как к обычной БД c помощью OleDb и вбить его в DataGridView, только обратно придется через StreamWriter
1
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 36
16.12.2011, 15:49
Как лучше раскидать по таблице строку str, загруженной из файла

C#
1
2
3
openFileDialog1.ShowDialog();
string fname = openFileDialog1.FileName;
string str = File.ReadAllText(fname);
где разделители строк "\r\n", с колонок ";" ?
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.12.2011, 17:54
А еще круче (и проще) связать dgv с таблицей DataTable, которая уже имеет методы чтения и сохранения xml.

Добавлено через 29 секунд
весь код займет 5 строк
1
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 36
17.12.2011, 10:53
Лично у меня "общение" с другой программой происходит пока только через txt файл.
Обнаружил ещё один вариант, массив строк:
C#
1
string[] lines = File.ReadAllLines(fname);
Добавлено через 16 часов 52 минуты
В целом код получился таким. Думаю он лучше тем, что к файлу обращается один раз.

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
        private void splitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
            string fname = openFileDialog1.FileName;
            string[] lines = File.ReadAllLines(fname);
 
            dataGridView1.Rows.Clear();
            dataGridView1.Columns.Clear();
            DataGridViewCell cell = new DataGridViewTextBoxCell();
            DataGridViewCell cell1 = new DataGridViewTextBoxCell();
 
            DataGridViewColumn col = new DataGridViewColumn();
            col.HeaderText = "Параметр";
            col.ReadOnly = false;
            col.CellTemplate = cell;
            DataGridViewColumn col1 = new DataGridViewColumn();
            col1.HeaderText = "Значение";
            col1.ReadOnly = false;
            col1.CellTemplate = cell1;
            DataGridViewColumn col2 = new DataGridViewColumn();
            col2.HeaderText = "Значение 2";
            col2.ReadOnly = false;
            col2.CellTemplate = cell1;
 
            dataGridView1.Columns.Add(col);
            dataGridView1.Columns.Add(col1);
            dataGridView1.Columns.Add(col2); 
 
            string[] inpstr;
            char[] delim = new char[] { ';' };  //Разделители
 
            for (int i = 0; i < lines.Length; i++)
            {
                inpstr = lines[i].Split(delim);
                dataGridView1.Rows.Add(inpstr);  
            }
        }
Но другой вопрос, как в цикле создавать столбцы таблицы, добавлять их в таблицу динамически? Это делается как массив объектов? Поделитесь плз шаблоном.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2011, 10:53
Помогаю со студенческими работами здесь

bmp to txt и наоборот
Интересует вопрос как это сделать на Delphi. Как работать с кодом изображения?

Сохранение в txt
Ребята, подскажите вот код в нем ошибка рурается. procedure TForm1.Button7Click(Sender: TObject); var tabla1:TextFile; //...

Сохранение txt
Добрый день. Открываю текстовый файл через IO, убираю не нужные символы... TextBox1.text = System.IO.ReadAllText(путькфайлу,...

Сохранение в .txt
Здравствуйте, меня интересует сохранение текста в файл. using (FileStream fs = new FileStream(&quot;C:\\Users\\date.txt&quot;,...

Сохранение пароля в txt
Как сделать так чтобы пароль из textBox1 Сохранялся В файл Parrol.txt если Form1 -форма для ввода пароля Form2- главная форма...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru