Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
77 / 77 / 42
Регистрация: 30.09.2014
Сообщений: 342

Сохранение данных из DataGridView в файл XML

17.06.2015, 10:31. Показов 4784. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро бойцы....


Сохраняю я значится данные из DATAgrid в файл txt и xml.... с тхт всё отлично.... а вот в xml всё сохраняется ток в первую ячейку... а мне б соответственно сохранить таблицу в том же виде

Подскажите что изменить


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
 private void button_save_Click(object sender, EventArgs e)
        {
  
 
     Stream myStream ;
   
     SaveFileDialog saveFileDialog1 = new SaveFileDialog();
 
     saveFileDialog1.Filter = "txt files (*.txt)|*.txt|xls files (*.xls)|*.xls";
     saveFileDialog1.FilterIndex = 2 ;
     saveFileDialog1.RestoreDirectory = true ;
 
     if(saveFileDialog1.ShowDialog() == DialogResult.OK)
     {
         if((myStream = saveFileDialog1.OpenFile()) != null)
         {
 
             StreamWriter myWriter = new StreamWriter(myStream);
             try
             {
 
                 if (saveFileDialog1.FilterIndex == 1)                     // если выбран txt
                 {
 
                     for (int i = 0; i < otchet_sut.ColumnCount; i++)
                         myWriter.Write(otchet_sut.Columns[i].HeaderText + ";");
                     myWriter.WriteLine();
 
                     for (int i = 0; i < otchet_sut.RowCount; i++)
                     {
                         for (int j = 0; j < otchet_sut.ColumnCount; j++)
                         {
                             myWriter.Write(otchet_sut.Rows[i].Cells[j].Value.ToString() + ";");
                         }
 
                         myWriter.WriteLine();
 
                     }
                 }
 
                 if (saveFileDialog1.FilterIndex == 2)             // выбран xml
                 {
 
                     for (int i = 0; i < otchet_sut.ColumnCount; i++)
                     {
                         myWriter.Write(otchet_sut.Columns[i].HeaderText + ";");
                         myWriter.WriteLine();
                     }
 
                     for (int i = 0; i < otchet_sut.RowCount; i++)
                     {
                         for (int j = 0; j < otchet_sut.ColumnCount; j++)
                         {
                             myWriter.Write(otchet_sut.Rows[i].Cells[j].Value.ToString() + ";");
                             myWriter.WriteLine();
                         }
 
                        
 
                     }
                 }
 
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message);
                String S;
                S = Convert.ToString(DateTime.Now);
                System.IO.StreamWriter writer = new System.IO.StreamWriter("D:\\Somin\\XY\\error.txt", true);
                writer.WriteLine(S + "Ошибка Сохранения суточного отчета");
                writer.Close();
 
 
             }
             finally
             {
                 myWriter.Close();
             }
             myStream.Close();
         }
     
 }
        }        // Кнопка Сохранить





конкретно эта часть

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 if (saveFileDialog1.FilterIndex == 2)             // выбран xml
                 {
 
                     for (int i = 0; i < otchet_sut.ColumnCount; i++)
                     {
                         myWriter.Write(otchet_sut.Columns[i].HeaderText + ";");
                         myWriter.WriteLine();
                     }
 
                     for (int i = 0; i < otchet_sut.RowCount; i++)
                     {
                         for (int j = 0; j < otchet_sut.ColumnCount; j++)
                         {
                             myWriter.Write(otchet_sut.Rows[i].Cells[j].Value.ToString() + ";");
                             myWriter.WriteLine();
                         }
 
                        
 
                     }
                 }


Спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2015, 10:31
Ответы с готовыми решениями:

Сохранение данных из таблицы в xml-файл
Здравствуйте. При попытке сохранить данные из dataGriedView в xml-файл при помощи XmlWriter, выходит ошибка:Ссылка на объект не указывает...

Сохранение плейлиста в XML файл
Помогите, пожалуйста, сохранить плейлист в xml файл на c#.

Сохранение XML в текстовый файл.
Хочу сохранить XML-файл построчно в текстовый, типа .INI . Что можете посоветовать? Или по другому, как можно прочитать построчно...

4
 Аватар для Art
153 / 153 / 56
Регистрация: 20.12.2011
Сообщений: 1,614
17.06.2015, 14:27
OTT, наверное, вам необходимо использовать XmlWriter для записи в xml файл. А вот вреде бы пример неплохой.
1
77 / 77 / 42
Регистрация: 30.09.2014
Сообщений: 342
17.06.2015, 15:53  [ТС]
Пример то не плохой.... но мне не подходит...так как я пытаюсь через saveFileDialog1 а они вместе с XmlWriter не хотят 1 файл юзать.....

Прочитал что myWriter.WriteLine(); для последжовательной записи в файл((( неужели ни как нельзя им по столбцам гулять(

Добавлено через 32 минуты
вроде надо использовать XmlSerializer ..... ни кто не знает как именно?
0
 Аватар для Art
153 / 153 / 56
Регистрация: 20.12.2011
Сообщений: 1,614
17.06.2015, 16:04
OTT, ну как вариант, самому "собирать", как-то так:
C#
1
2
3
4
5
for (int j = 0; j < otchet_sut.ColumnCount; j++)
{
       myWriter.Write("<node> " + YOU_TEXT + "</node>\n");
       myWriter.WriteLine();
}
0
77 / 77 / 42
Регистрация: 30.09.2014
Сообщений: 342
18.06.2015, 12:39  [ТС]
он в xml пишет только в первые ячейки как в строки...



нашел написал так




C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
               if (saveFileDialog1.FilterIndex == 2)             // выбран xml
                 
 
                    SaveDocToFileXML(saveFileDialog1.FileName);
                        
 
                     
                 }
        private void SaveDocToFileXML(String TR4FileName)
        {
            StreamWriter writer = new StreamWriter(TR4FileName);
            XmlSerializer serializer = new XmlSerializer(typeof(DataGridView));
            serializer.Serialize(writer, otchet_sut);
            writer.Close();
        }



Но выдает ошибку Пишет: Возникла ошибка при отражении типа "System.Windows.Forms.DataGrid"((((((((( ((

Добавлено через 1 час 9 минут
написал так

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
private void SaveDocToFileXML(String TR4FileName)
{           
    XmlTextWriter writer = null;
    try
    {
 
         
 
        writer = new XmlTextWriter(TR4FileName, System.Text.Encoding.Unicode);     
        writer.Formatting = Formatting.Indented;
        writer.WriteStartDocument();
 
   
        writer.WriteStartElement("DocInfo");
     
      
 
        //Запись данных
 
        writer.WriteStartElement("Table");
      
 
            for (int i = 0; i < otchet_sut.RowCount - 1; i++)
            {
                writer.WriteStartElement("Row");
                writer.WriteAttributeString("Дата", otchet_sut.Rows[i].Cells[0].Value.ToString());
            //    writer.WriteAttributeString("Значение", otchet_sut.Rows[i].Cells[1].Value.ToString());
 
                writer.WriteEndElement();
            }
            writer.WriteEndElement();
            writer.WriteEndElement();
            writer.WriteEndDocument();
 
 
         } 
    
    catch (Exception ex)
    {
        MessageBox.Show("Ошибка: " + ex.Message);
    }
    finally
    {
    if (writer != null) writer.Close();
    }
}


выводит 1 столбец все как надо.... если убрать комент с
C#
1
   //    writer.WriteAttributeString("Значение", otchet_sut.Rows[i].Cells[1].Value.ToString());

то выводит две все как надо.... как б теперь в цикл загнать ... то сколько будет столбцов неизвестно)

Добавлено через 19 часов 14 минут
Короче сделал так. все работает четенько)))


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  Microsoft.Office.Interop.Excel.Application exApp = new Microsoft.Office.Interop.Excel.Application();
 
                     exApp.Visible = true;
                     exApp.Workbooks.Add();
                     int rowExcel = 2;
                     Worksheet workSheet = (Worksheet)exApp.ActiveSheet;
 
                     for (int j = 0; j < otchet_sut.ColumnCount; j++)
                     workSheet.Cells[1, j+1]=otchet_sut.Columns[j].HeaderText;    //j+1 - в xml в 1 а не с 0 
                   
                     for (int j = 0; j < otchet_sut.ColumnCount; j++,rowExcel=2)
                  
                         for (int i = 0; i < otchet_sut.Rows.Count; i++)
                         {
                             workSheet.Cells[rowExcel, j + 1] = otchet_sut.Rows[i].Cells[j].Value;
 
                             ++rowExcel;
 
                         }
                 
                     workSheet.SaveAs(saveFileDialog1.FileName);
 
                     exApp.Quit();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2015, 12:39
Помогаю со студенческими работами здесь

сохранение данных из DataGridView
Имеется главная форма (Form1), через которую вызывается 2я форма (Form2). На второй форме имеется DataGridView (не привязанный ни какой БД,...

Сохранение объектов класса в Xml файл
нужно сохранить значение классов в xml файл описание одного из классов class AnimalTip { private string _name_tip;...

Реализовать ввод данных и сохранение в XML
помогите пожалуйста реализовать функцию:пользователь вводит кол-во предметов,затем вводит сами предметы.они сохраняются в XML файл ...

Как реализовать сохранение данных используя DataGridView?
Собсно вопрос по теме. Имеется несколько DataGriedView-ов. Нужно, чтобы после занесения в таблицу данных, сохранять эти данные. Только вот...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru