Member 14638721 Ответов: 2

Экспорт отчета в datagrid в excel


У меня есть такой код. Я хотел бы спросить, что мне делать, если я хочу экспортировать этот отчет в excel. Многие из примеров, которые я нашел, обычно использовали концепцию привязки данных или представление таблицы данных. Может кто-нибудь научить меня, как это сделать?

Что я уже пробовал:

<pre> private int LoadReport()
        {
            try
            {
                int rowcount;
                int result;
                DataTable records;
                Process process;

                dgResult.ItemsSource = null;

                switch (_process)
                {
                    case Process.I:
                        process = Process.I_RECEIVING;
                        break;
                    case Process.A:
                        process = Process.A_RECEIVING;
                        break;
                    case Process.c:
                        process = Process.C_RECEIVING;
                        break;
                    default:
                        return 0;
                }
                result = DB.GetReport(Session, out rowcount, out records, User, (int)process, DateTime.Now.AddMonths(-3), DateTime.Now);

                dgResult.ItemsSource = records.DefaultView;

                return 0;

            }
            catch
            {
                throw;
            }

2 Ответов

Рейтинг:
2

Richard Deeming

Я бы рекомендовал использовать библиотеку, которая не зависит от того, установлена ли у пользователя правильная версия Excel. Например:
GitHub - JanKallman/EPPlus: создание расширенных электронных таблиц Excel с использованием .NET[^]

result = DB.GetReport(Session, out rowcount, out records, User, (int)process, DateTime.Now.AddMonths(-3), DateTime.Now);

using (var package = new ExcelPackage())
{
    var sheet = package.Workbook.Worksheets.Add("Report");
    sheet.Cells["A1"].LoadFromDataTable(records, true, TableStyles.Medium9);
    package.SaveAs(filePath);
}


Member 14638721

результат = ДБ.GetReport(сессии, из строк, из записей пользователя, процесс (инт), даты и времени.Сейчас.AddMonths(-3), Даты И Времени.Сейчас);

использование (var package = new ExcelPackage())
{
var sheet = пакет.Рабочая тетрадь.Worksheets.Add("Отчет");
лист.Ячейки["A1"].LoadFromDataTable(records, true, TableStyles.Медиум9);
пакет.SaveAs(пакет.SaveAs(новый
System.IO.FileInfo(@"C:\Users\Desktop\try.xlsx"));
}
Я сделал это так, однако ничего не вышло. Можете ли вы посоветовать? Кроме того, я на самом деле использую поле со списком, где есть другие различные случаи отчетов, так что можно ли использовать кнопку для его экспорта?

Richard Deeming

Что вы имеете в виду, говоря, что ничего не происходит? Вы сохраняете файл на диск.

Вы ожидали увидеть его на экране? Если да, то звоните Process.Start передача пути к файлу для открытия файла.

Если вы хотите экспортировать, когда пользователь нажимает кнопку, Вы можете вызвать этот код из обработчика событий click для этой кнопки.

Рейтинг:
1

Richard MacCutchan

В быстрых ответах нет места для объяснения такой концепции. Однако есть много ресурсов, которые Google найдет для вас. И вы также могли бы заглянуть в Работа с MS Excel(xls / xlsx) Использование MDAC и Oledb[^] и Microsoft.Офис.Взаимодействие.Пространство Имен Excel | Microsoft Docs[^]


Member 14638721

Спасибо. Я пройду через это в выходные дни.