powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / asp net core выгрузить файл
13 сообщений из 13, страница 1 из 1
asp net core выгрузить файл
    #40104415
maximIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Использую ClosedXML для формирования файла

вот код контроллера

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
[HttpGet]
        public IActionResult ExcelExport(Guid OfferId)
        {

            var Data = from od in Context.OfferDetails.Where(od => od.OfferId == OfferId)
                       select new
                       {
                           TmcGroupName = string.Format("Группа ТМЦ: {0}", od.Tmc.TmcGroup.Name.Trim()),
                           od.Tmc.TmcNumber
                       };

            var XlBook = new XLWorkbook("wwwroot/files/offer.xlsx");
            var XlSheet = XlBook.Worksheets.First();

            XlSheet.Cell(6, 1).InsertData(Data.AsEnumerable());

            using MemoryStream stream = new();

            XlBook.SaveAs(stream);

            return File(stream.ToArray(), "application/octet-stream", "InsertingData.xlsx");

        }



и вод как я это дело вызываю

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<script>

    function ExcelExport() {

        $.ajax({
            method: "GET",
            url: `api/Offers/ExcelExport`,
            responseType: 'blob',
            data: { OfferId: SelectedOfferId }
        }).then((response) => {
            const url = window.URL.createObjectURL(new Blob([response], { type: 'application/octet-stream' }));
            const link = document.createElement('a');

            link.href = url;
            link.setAttribute('download', 'file.xlsx');
            document.body.appendChild(link);
            link.click();
        });

    }

</script>



файлик то в итоге скачивается и он не пустой но битый . я что-то втупляю жутко и не пойму как верно работать с файлом и скачать его не битым
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104448
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104449
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и можете попробовать с этим типом:
Код: javascript
1.
type: "application/vnd.ms-excel"
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104476
maximIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, да все тоже самое. думаю тут какой-то нюанс new Blob([response]) может не в том типе возвращаю может еще что-то
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104494
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так попробуйте
Код: 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.
[HttpGet]
public IActionResult ExcelExport(Guid OfferId)
{
    string fileName = "InsertingData.xlsx";
    var Data = from od in Context.OfferDetails.Where(od => od.OfferId == OfferId)
                       select new
                       {
                           TmcGroupName = string.Format("Группа ТМЦ: {0}", od.Tmc.TmcGroup.Name.Trim()),
                           od.Tmc.TmcNumber
                       };

            var XlBook = new XLWorkbook("wwwroot/files/offer.xlsx");
            var XlSheet = XlBook.Worksheets.First();

            XlSheet.Cell(6, 1).InsertData(Data.AsEnumerable());

            using (MemoryStream stream = new MemoryStream())
            {
                    XlBook.SaveAs(stream);
                    InMemoryFile file = new InMemoryFile();
                    file.FileName = fileName;
                    file.Content = stream.ToArray();
            }
     return File(file.Content, "applicatication/xlsx", fileName);
}
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104500
maximIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, что такое InMemoryFile
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104509
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обёртка MemoryMappedFiles
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104513
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно проще
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[HttpGet]
public IActionResult ExcelExport(Guid OfferId)
{
   ...
   using (MemoryStream stream = new MemoryStream()) {
      XlBook.SaveAs(stream);
      return new FileStreamResult(stream , "application/ms-excel" )
                   {
                       FileDownloadName = "InsertingData.xlsx"
                   };
   }
}
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104527
maximIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, так вообще не работает. ничего не скачивает. вероятно потому что не умеет работать с filestreamresult

я думаю что проблема вообще тут в том что данные надо как-то конветировать
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104531
maximIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в js

вот где-то тут

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
function ExcelExport() {

        $.ajax({
            method: "GET",
            url: `api/Offers/ExcelExport`,
            responseType: 'blob',
            data: { OfferId: SelectedOfferId }
        }).then((response) => {
            const url = window.URL.createObjectURL(new Blob([response], { type: 'application/octet-stream' }));
            const link = document.createElement('a');

            link.href = url;
            link.setAttribute('download', 'file.xlsx');
            document.body.appendChild(link);
            link.click();
        });

    }
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104536
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и добавьте вывод в консоль, чтобы посмотреть , что за данные приходят
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        $.ajax({
                method: "GET",
                url: 'api/Offers/ExcelExport',
                responseType: 'blob',
                data: { OfferId: SelectedOfferId }
            }).then((resp) => {    
                var data = resp.arrayBuffer();
                var blob = new Blob([data], { type: "application/vnd.ms-excel"});
                let downloadLink = document.createElement('a');
                downloadLink.href = window.URL.createObjectURL(blob);
                downloadLink.setAttribute('download', fileName);
                document.body.appendChild(downloadLink);
                downloadLink.click();
                downloadLink.remove();
 });
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104539
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это из-за $.ajax()
посмотрите тут: https://stackoverflow.com/questions/12394622/does-jquery-ajax-or-load-allow-for-responsetype-arraybuffer

вам нужно arrayBuffer получить
...
Рейтинг: 0 / 0
asp net core выгрузить файл
    #40104551
maximIZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо вот тут в статье https://github.com/eligrey/FileSaver.js/wiki/Saving-a-remote-file#diffrent-ajax-methods как и чем воспользоваться вместо ajax

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
[HttpGet("{id}")]
        public FileResult ExcelExport(Guid id)
        {

            var Data = from od in Context.OfferDetails.Where(od => od.OfferId == id)
                       select new
                       {
                           TmcGroupName = string.Format("Группа ТМЦ: {0}", od.Tmc.TmcGroup.Name.Trim()),
                           od.Tmc.TmcNumber
                       };

            using XLWorkbook XlBook = new("wwwroot/files/offer.xlsx");
            using MemoryStream stream = new();

            var XlSheet = XlBook.Worksheets.First();

            XlSheet.Cell(6, 1).InsertData(Data.AsEnumerable());

            XlBook.SaveAs(stream);

            return File(stream.ToArray(), "application/vnd.ms-excel", "InsertingData.xlsx");

        }



Код: javascript
1.
2.
3.
4.
5.
6.
7.
<script>
    function ExcelExport() {

        fetch('api/Offers/ExcelExport/' + SelectedOfferId).then(res => res.blob()).then(blob => saveAs(blob, 'Employees.xlsx'))

    }
</script>
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / asp net core выгрузить файл
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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