powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / экспорт в Excel из datagridView
7 сообщений из 7, страница 1 из 1
экспорт в Excel из datagridView
    #38538658
А381ПТК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста как произвести экспорт данных в Excel из DataGridView через DataTable.

Вот структура. Как использовать вместо DataGridView DataTable.

namespace V2
{
public partial class _2VER : Form
{
public _2VER()
{
InitializeComponent();
}
OleDbConnection conn = new OleDbConnection();
OleDbCommand comm = new OleDbCommand();
OleDbDataAdapter ad = new OleDbDataAdapter();
BindingSource bs = new BindingSource();
DataTable dt = new DataTable();

private void _2VER_Load(object sender, EventArgs e)
{
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Прочие документы\Учеба 2014\Управление проектами\V2\ПРАКТИКА2.accdb";
comm=conn.CreateCommand();
comm.CommandText = "select * from ПК";
ad.SelectCommand = comm;
ad.Fill(dt);
dataGridView1.DataSource = dt;
}

private void button1_Click(object sender, EventArgs e)
{
Excel2.Application app = new Excel2.Application();
app.SheetsInNewWorkbook = 2;
app.Workbooks.Add();
app.Visible = true;
Excel2.Workbook book = app.Workbooks[1];
Excel2.Worksheet sheet2 = book.Worksheets[2];
for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
{
sheet2.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
}
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
sheet2.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}
sheet.Activate();
}
}
}
...
Рейтинг: 0 / 0
экспорт в Excel из datagridView
    #38538904
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять убогий ком интероп? )
...
Рейтинг: 0 / 0
экспорт в Excel из datagridView
    #38542962
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А381ПТК,
не в коем случае такого не делай...
как минимум создать документ xlsx и пихнуть туда данные посредством OleDB, через OleDBdataAdapter, из DataTable...
тут строки подключения к Excel:

http://www.connectionstrings.com/excel/

как написать схему для Excel, пойщи по слову:
Schema.ini

либо выгружай в xml, у DataTable есть спец. функция...
...
Рейтинг: 0 / 0
экспорт в Excel из datagridView
    #38543035
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitCА381ПТК,
не в коем случае такого не делай...С чего это вдруг?

В гриде пользователь может скрыть какие-то колонки, поменять их местами, наложить фильтры, группировки. Разные строки (ячейки) могут быть подсвечены разными цветами. И всё это пользователь захочет выгрузить в Excel.

Так что я бы не был столь категоричным.
...
Рейтинг: 0 / 0
экспорт в Excel из datagridView
    #38543239
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OleDB малоэффективное средство. OpenXML наше всё. Интероп - дичайшее зло.
...
Рейтинг: 0 / 0
экспорт в Excel из datagridView
    #38543371
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAWitCА381ПТК,
не в коем случае такого не делай...С чего это вдруг?

В гриде пользователь может скрыть какие-то колонки, поменять их местами, наложить фильтры, группировки. Разные строки (ячейки) могут быть подсвечены разными цветами. И всё это пользователь захочет выгрузить в Excel.

Так что я бы не был столь категоричным.
таки да, слишком категорично.
средство есть, оно работает. всё остальное - дело вкуса...
...
Рейтинг: 0 / 0
экспорт в Excel из datagridView
    #38543630
igr_ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А381ПТКПодскажите пожалуйста как произвести экспорт данных в Excel из DataGridView через DataTable.
Вот структура. Как использовать вместо DataGridView DataTable.
DataTable dt=(DataTable) DataGridView.DataSource

Запись массива данных в позицию строки numrow и столбца numcolumn
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
private static void WriteClientData(DataRow[] rows, Excel.Worksheet oWorkSheet, int numrow, int numcolumn)
        {
            object[,] dataExport = new object[rows.Length, rows[0].ItemArray.Length];
            for (int i = 0; i < rows.Length; i++)
            {
                for (int k = 0; k < rows[0].ItemArray.Length; k++)
                {
                    dataExport[i, k] = rows[i][k];
                }
            }
            Excel.Range rg = oWorkSheet.get_Range(oWorkSheet.Cells[numrow, numcolumn], oWorkSheet.Cells[numrow + rows.Length - 1, numcolumn+ rows[0].ItemArray.Length - 1]);
            rg.set_Value(Excel.XlRangeValueDataType.xlRangeValueDefault, dataExport);
        }


Я предпочитаю DataRow[], а не DataTable, т.к. часто требуется вставлять отфильтрованные данные. Для вставки всей таблицы передается DataTable.Select()

P.S. Любителям побросаться камнями в Interop, буду благодарен, если скажете, какими еще средствами можно раскрашивать ячейки, делать группировки строк и столбцов, писать формулы и т.п.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / экспорт в Excel из datagridView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]