Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# Windows Forms

Войти
Регистрация
Восстановить пароль
 
ya_yanchik-2909
0 / 0 / 0
Регистрация: 27.05.2014
Сообщений: 60
Записей в блоге: 1
#1

Выгрузка таблицы dataGridView в Excel - C#

07.12.2016, 06:00. Просмотров 386. Ответов 4
Метки нет (Все метки)

Создала приложение на C# для работы с большим массивом данных.
- Сначала в таблицу dataGridView загружаются документы Word и содержимое раскидывается по колонкам
- Затем таблица dataGridView выгружается в Excel.
Вопрос в том, что при выгрузке в Excel № почему-то выгружаются в формате даты (ставит мне дату, подходящую этому номеру).

? - Как установить формат ячеек в Excel через С#?
Таблицу я выгружаю всегда в новый документ Эксель, поэтому заранее отредактировать колонки не имею возможности.

Добавлено через 1 час 27 минут
Вот таков мой код.

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
  private void button6_Click(object sender, EventArgs e)    //  Создаем Excel // 
        {
            Excel.Application excel = new Excel.Application(); // Создаем СОМ - объект Excel //
            excel.Visible = true; // делаем объект видимым //
            excel.SheetsInNewWorkbook = 4; // количество листов  в книге //
            excel.Workbooks.Add(Type.Missing); // добавляем книгу //
            Excel.Workbook workbook = excel.Workbooks[1]; // получаем ссылку на первую открытую книгу  //
            Excel.Worksheet sheet = workbook.Worksheets.get_Item(1); //  получаем ссылку на первый лист //
            
                int rowExcel = 2; // начать со второй строки //
            for (int i = 0; i < dataGridView1.Rows.Count; i++) // int i = 0 - начальное положение, индекс первого просматриваемого элемента; условие выхода из цикла; шаг движения по циклу // 
            {
                sheet.Cells[rowExcel, "A"] = dataGridView1.Rows[i].Cells["Column1"].Value;  // заполняем строку // 
                sheet.Cells[rowExcel, "B"] = dataGridView1.Rows[i].Cells["Column2"].Value; // В столбец "В" заполняем значения из колонки 2 ДатаГрида //
                sheet.Cells[rowExcel, "C"] = dataGridView1.Rows[i].Cells["Column3"].Value;
 
                ++rowExcel;
            }
            
            sheet.Cells[1, 1] = "№ п/п";
            sheet.Cells[1, 2] = "Фамилия_Имя_Отчество" ;
            sheet.Cells[1, 3] = " № производства";
            sheet.Cells.get_Range("A1", "E1").Font.Bold = true; // делаем их жирными // 
            sheet.Cells.get_Range("A1", "E1").ColumnWidth = 15;// ширина столбца  //
            sheet.Cells.get_Range("A1", "E1").ColumnWidth = 15; // размер шрифта //
            sheet.Cells.get_Range("C1", "C20").NumberFormat = "String";
 
        }
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2016, 06:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выгрузка таблицы dataGridView в Excel (C#):

Импорт из таблицы Excel в DataGridView - C#
Ругается на строке dataGridView3.Rows.Add(1); словами: Дополнительные сведения: Невозможно добавить строки в элемент управления...

Как импортировать шапку таблицы из Excel в DataGridView, сохранив первоначальный вид? - C#
Уважаемые знатоки, подскажите как мне поместить в DataGridView вот такую экселевскую таблицу

Перенос данных из Excel или таблицы Word в DataGridView простым копированием ячеек - C#
Нигде не могу найти, как организовать перенос данных из Excel или таблицы Word в DataGridView простым копированием ячеек. Может кто...

Выгружается только последняя строчка при выгрузке данных из таблицы DataGridView в Excel - C#
Всем здравствуйте =) Подскажите пожалуйста! Я выгружаю данные из таблицы DataGridView C# в таблицу Excel (при нажатии на кнопку). ...

Выгрузка из DataGridView в Эксель - C#
Всем доброго времени суток! Задался на работе целью, программку мелкую сделать, для упрощения собственного рабочего процесса. Итак: есть...

Выгрузка Excel из процессов - C#
Доброго времени суток всем! Есть код, который из Excel передает все данные на форму в dataGridView1. Естественно после работы с Эксель...

4
ViterAlex
6133 / 3350 / 1018
Регистрация: 11.02.2013
Сообщений: 7,432
Завершенные тесты: 3
07.12.2016, 08:35 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Есть такая фишка у Excel — самому решать на что похоже выражение. добавь знак ' перед значением, чтобы оно интерпретировалось как текст:
C#
1
sheet.Cells[rowExcel, "A"] = "'" + dataGridView1.Rows[i].Cells["Column1"].Value.ToString();
1
ya_yanchik-2909
0 / 0 / 0
Регистрация: 27.05.2014
Сообщений: 60
Записей в блоге: 1
07.12.2016, 09:02  [ТС] #3
Спасибо большое!
0
LevOne1
0 / 0 / 0
Регистрация: 14.03.2017
Сообщений: 7
31.05.2017, 14:14 #4
ViterAlex, как можно задать координаты для ячеек которые переносятся в excel ?
0
by_wolvas
7 / 7 / 0
Регистрация: 25.05.2015
Сообщений: 126
31.05.2017, 17:48 #5
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
 private void btnExport_Click(object sender, EventArgs e)
        {
            ExportToExcel();
        }
  private void PopulateRows()
        {
            for (int i = 1; i <= 10; i++)
            {
                DataGridViewRow row =
                    (DataGridViewRow)dgvCityDetails.RowTemplate.Clone();
 
                row.CreateCells(dgvCityDetails, string.Format("City{0}", i),
                    string.Format("State{0}", i), string.Format("Country{0}", i));
 
                dgvCityDetails.Rows.Add(row);
 
            }
        }
 
  private void ExportToExcel()
        {
           
            Microsoft.Office.Interop.Excel._Application excel = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing);
            Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
 
            try
            {
                
                worksheet = workbook.ActiveSheet;
 
                worksheet.Name = "ExportedFromDatGrid";
 
                int cellRowIndex = 1;
                int cellColumnIndex = 1;
 
               
                for (int i = 0; i < dgvCityDetails.Rows.Count - 1; i++)
                {
                    for (int j = 0; j < dgvCityDetails.Columns.Count; j++)
                    {
                        // Excel index starts from 1,1. As first Row would have the Column headers, adding a condition check.
                        if (cellRowIndex == 1)
                        {
                            worksheet.Cells[cellRowIndex, cellColumnIndex] = dgvCityDetails.Columns[j].HeaderText;
                        }
                        else
                        {
                            worksheet.Cells[cellRowIndex, cellColumnIndex] = dgvCityDetails.Rows[i].Cells[j].Value.ToString();
                        }
                        cellColumnIndex++;
                    }
                    cellColumnIndex = 1;
                    cellRowIndex++;
                }
 
              
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
                saveDialog.FilterIndex = 2;
 
                if (saveDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    workbook.SaveAs(saveDialog.FileName);
                    MessageBox.Show("Export Successful");
                }               
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                excel.Quit();
                workbook = null;
                excel = null;
            }
Все что находить в датагриде, будет экспортирвоанно в Excel.
0
31.05.2017, 17:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2017, 17:48
Привет! Вот еще темы с ответами:

Выгрузка из Excel в ComboBox - C#
Здравствуйте. Хотел узнать как произвести выгрузку из Excel в ComboBox? Нужно перенести определенный столбец. Работаю в Windows Forms.

Быстрая выгрузка в готовый шаблон Excel - C#
Добрый день! Необходимо было создать внешнюю оболочку для пользователя, которая запускала бы хранимую процедуру на сервере со входными...

.NET 3.x Взаимодействие с Excel, передача строки из DataGridView в столбец Excel - C#
Всем привет. Есть DataGridView в котором всего 1 строка и 10 столбцов необходимо передать данные из DataGridView в Excel причем в...

Заполнить datagridview второй таблицы выделенными строками из первой таблицы - C#
Есть база в аксес, и приложение c#, на форме 2 грида, слева из базы аксеса, справа добавил сам грид, который не привязан ни к какой...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.