Member 12690943 Ответов: 1

Открыть или сохранить подсказки на Скачать файл


Я работаю над извлечением данных из datatable.
То, что я пробовал, работает, но проблема в том, что нет подсказки пользователю, если он хочет непосредственно открыть файл или сохранить его в папке.
Что я должен добавить или изменить в коде?

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

private void ExporttoExcel()
        {

            string fileName = "Subcon_Profile_List_Import_Error_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";

            Excel.Application oXL;
            Excel.Workbook oWB;
            Excel.Worksheet oWS;
            Excel.Range oRange;

            oXL = new Excel.Application();

            oXL.Visible = false;
            oXL.DisplayAlerts = false;

            oWB = oXL.Workbooks.Add(Missing.Value);

            oWS = (Excel.Worksheet)oWB.ActiveSheet;
            oWS.Name = "Error_Log";

            int rowCount = 1;

            foreach (DataRow dr in DTSubconProfileListImport.Rows)
            {
                rowCount += 1;

                for (int i = 1; i < DTSubconProfileListImport.Columns.Count + 1; i++)
                {
                    if (rowCount == 2)
                    {
                        oWS.Cells[1, i] = DTSubconProfileListImport.Columns[i - 1].ColumnName;
                    }
                    oWS.Cells[rowCount, i] = dr[i - 1].ToString();
                }
            }

            Excel.Range r1 = oWS.Cells[1, 1];
            Excel.Range r2 = oWS.Cells[rowCount, DTSubconProfileListImport.Columns.Count];
            oRange = (Excel.Range)oWS.get_Range(r1, r2);
            oRange.EntireColumn.AutoFit();

            oWS = null;
            oRange = null;
            oWB.SaveAs(fileName, Excel.XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlExclusive, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
            oWB.Close(Missing.Value, Missing.Value, Missing.Value);
            oWB = null;
            oXL.Quit();
           
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

        }

1 Ответов

Рейтинг:
6

F-ES Sitecore

После сохранения файла вам нужно будет отправить его клиенту

Загрузка файла с диалоговым окном Сохранить как в ASP.NET -веб-журнал Рика Штрала[^]

Кстати, я предполагаю, что вы выполняете всю эту работу на своей локальной машине и еще не развернули ее на удаленной машине для тестирования. Когда вы на самом деле развернете этот код, он не будет работать, так как автоматизация Excel не поддерживается на asp.net сайт. Используйте EPPlus, драйвер Excel ODBC или XML SDK для создания файлов Excel с помощью asp.net.


Richard Deeming

+5
Вероятно, было бы неплохо включить ссылки на статью MSKB и соответствующие инструменты:

Соображения по автоматизации работы офиса на стороне сервера[^]
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или взаимоблокировку при запуске Office в этой среде.

* EPPlus[^];
* ClosedXML[^];
* SDK OpenXML[^];