Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
ya_yanchik-2909
0 / 0 / 2
Регистрация: 27.05.2014
Сообщений: 60
Записей в блоге: 1
#1

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

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

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

? - Как установить формат ячеек в 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
Ругается на строке dataGridView3.Rows.Add(1); словами: Дополнительные сведения:...

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

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

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

Выгрузка xml в datagridview
Задача выгрузки из xml файла всех таблиц разом в datagridview и дальнейшая...

4
ViterAlex
6347 / 3551 / 1457
Регистрация: 11.02.2013
Сообщений: 7,816
Завершенные тесты: 3
07.12.2016, 08:35 #2
Лучший ответ Сообщение было отмечено ya_yanchik-2909 как решение

Решение

Есть такая фишка у Excel — самому решать на что похоже выражение. добавь знак ' перед значением, чтобы оно интерпретировалось как текст:
C#
1
sheet.Cells[rowExcel, "A"] = "'" + dataGridView1.Rows[i].Cells["Column1"].Value.ToString();
1
ya_yanchik-2909
0 / 0 / 2
Регистрация: 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
8 / 8 / 2
Регистрация: 25.05.2015
Сообщений: 169
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
Привет! Вот еще темы с решениями:

Выгрузка информации из таблиц DataGridView
Добрый день, прошу помощи. Предо мной возникла задача, нужно выгрузить всю...

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

Выгрузка из Excel в ComboBox
Здравствуйте. Хотел узнать как произвести выгрузку из Excel в ComboBox? Нужно...

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


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

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

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