powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Топик ненависти к Open XML SDK
112 сообщений из 112, показаны все 5 страниц
Топик ненависти к Open XML SDK
    #38921144
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта чудо-библиотека кроме своей замечательной объектной модели ещё не умеет автоподбирать ширину ячеек по содержимому.

Но есть отличное решение . Браво, Microsoft!
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921147
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
Где-то это я уже видел - совсем недавно проскальзывало решение. Де Жа Вю?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921152
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronАлексей К,
Где-то это я уже видел - совсем недавно проскальзывало решение. Де Жа Вю?Тут не искал. Просто крик души...

Ну а какие там варианты, кроме как самому рассчитывать ширину через System.Drawing? Да и тянуть System.Drawing в Asp.Net как-то не очень. Как оно будет работать в перспективе под всякими "линуксами" в Asp.Net vNext?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921153
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мало йаду, желания убить разработчиков сабжа не возникает.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921156
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyмало йаду, желания убить разработчиков сабжа не возникает.Пока держу в себе.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921161
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помнится:

"Open XML SDK великолепен, Excel OLE Automation УГ" (ц) МСУ & Изопропил
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921179
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если посмотреть в Open XML SDK 2.5 Productivity Tool, как он генерируют автофит? Еще один воркэраунд - пусть автофитят юзеры.

P.S. Да, проблема реально незыблема, можно ставить крест на Open XML
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921182
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAntonariyмало йаду, желания убить разработчиков сабжа не возникает.Пока держу в себе.топег сдержанной английской ненависти, проявляющейся в дергании век и постукивании тростью об паркет.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921195
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЭта чудо-библиотека кроме своей замечательной объектной модели ещё не умеет автоподбирать ширину ячеек по содержимому.

Но есть отличное решение . Браво, Microsoft!

Автоподбор ширины это область ответственности программы просмотра. У меня вместо ариала стоят другие более широкие шрифты, Microsoft должна быть телепатом?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921197
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЕще один воркэраунд - пусть автофитят юзеры.

Это не воркэраунд, это совершенно нормальное поведение. Либо макрос, если жмёт в одном месте.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921235
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КЭта чудо-библиотека кроме своей замечательной объектной модели ещё не умеет автоподбирать ширину ячеек по содержимому.

Но есть отличное решение . Браво, Microsoft!

Автоподбор ширины это область ответственности программы просмотра. У меня вместо ариала стоят другие более широкие шрифты, Microsoft должна быть телепатом?Вот именно, что если я даже подберу ширину под один шрифт + DPI, у пользователя может оказаться другое. Поэтому колонка должна быть помечена признаком, чтобы она расширялась, если не влезают данные. Для этого у Column есть свойство BestFit, но оно почему-то не работает.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921238
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУЕще один воркэраунд - пусть автофитят юзеры.

Это не воркэраунд, это совершенно нормальное поведение.Вы оба упороты.
hVosttЛибо макрос, если жмёт в одном месте.Поставить макрос в автозапуск? Что скажет система безопасности?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921243
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУЕще один воркэраунд - пусть автофитят юзеры.
Это не воркэраунд, это совершенно нормальное поведение. Либо макрос, если жмёт в одном месте.
Честно говоря, вообще не вижу проблемы. Она высосана из пальца. Ясен пень Open XML по возможностям не покрывает всей interop модели. Но на кону - честный кроссплатформенный XML или ублюдочный COM. Ну если Леше так дорог автофит, ну пусть возвращается на COM и радуется очередным багам и утечкам

Алексей КВы оба упороты.


Алексей КhVosttЛибо макрос, если жмёт в одном месте.Поставить макрос в автозапуск? Что скажет система безопасности?
Не, ну я категорически против гавномакросов. Вопрос не ко мне :)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921247
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА если посмотреть в Open XML SDK 2.5 Productivity Tool, как он генерируют автофит?Ок. Завтра посмотрю.
МСУP.S. Да, проблема реально незыблема, можно ставить крест на Open XML Через 30 минут знакомства с ней возникла неразрешимая проблема. Что я должен про неё думать?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921257
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttпропущено...

Это не воркэраунд, это совершенно нормальное поведение. Либо макрос, если жмёт в одном месте.
Честно говоря, вообще не вижу проблемы. Она высосана из пальца. Ясен пень Open XML по возможностям не покрывает всей interop модели.Слабо было сделать, чтобы покрывало?
МСУНо на кону - честный кроссплатформенный XML или ублюдочный COM. Ну если Леше так дорог автофит, ну пусть возвращается на COM и радуется очередным багам и утечкам Я бы с радостью через COM, но Asp.Net этого не любит. :-(
МСУАлексей Кпропущено...
Поставить макрос в автозапуск? Что скажет система безопасности?
Не, ну я категорически против гавномакросов. Вопрос не ко мне :)Ну правда, придётся или макросом, или через System.Drawing на сервере ширину текста считать. В принципе, шрифт известен...
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921269
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кили через System.Drawing на сервере ширину текста считать. В принципе, шрифт известен...дак и в чём проблема?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921275
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кили через System.Drawing на сервере ширину текста считать. В принципе, шрифт известен...дак и в чём проблема?

Дык хочется, чтобы оно как-то само работало и была функция/возможность на каждый мало-мальский чих. Нормальное желание истинного программиста?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921278
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНе, ну я категорически против гавномакросов. Вопрос не ко мне :)

А чем те макросы не угодили?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921281
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кили через System.Drawing на сервере ширину текста считать. В принципе, шрифт известен...дак и в чём проблема?
1. Почему приходится заниматься этой мутотой?
2. Как это будет смотреться в перспективе кроссплатформенности Asp.Net vNext?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921286
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУНе, ну я категорически против гавномакросов. Вопрос не ко мне :)

А чем те макросы не угодили? Ну при открытии документа Excel заипёт со своими вопросами про небезопасность макросов.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921288
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

width = Truncate([{Number of Characters} * {Maximum Digit Width} + {5 pixel padding}] / {Maximum Digit Width} * 256) / 256
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921292
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttпропущено...


А чем те макросы не угодили? Ну при открытии документа Excel заипёт со своими вопросами про небезопасность макросов.

Всё верно, пусть не расслабляются!
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921295
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей К,

width = Truncate([{Number of Characters} * {Maximum Digit Width} + {5 pixel padding}] / {Maximum Digit Width} * 256) / 256Да видел я уже в MSDN эту печальную формулу. :-)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921296
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
дак и в чём проблема?
1. Почему приходится заниматься этой мутотой?Потому как тебе нужен этот функционал, значит надо реализовать.
Алексей К2. Как это будет смотреться в перспективе кроссплатформенности Asp.Net vNext?Зайди на сайт Mono и зацени "как это будет смотреться", вместо того, чтобы ныть.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921297
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttАлексей К,

width = Truncate([{Number of Characters} * {Maximum Digit Width} + {5 pixel padding}] / {Maximum Digit Width} * 256) / 256Да видел я уже в MSDN эту печальную формулу. :-)

А чё не так, хорошая формула!
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921298
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей Кпропущено...
Ну при открытии документа Excel заипёт со своими вопросами про небезопасность макросов.

Всё верно, пусть не расслабляются! Тоже верно...
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921308
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей К2. Как это будет смотреться в перспективе кроссплатформенности Asp.Net vNext?Зайди на сайт Mono и зацени "как это будет смотреться"Ну хорошо, если там будет полноценный Mono, умеющий System.Drawing. А то у этих непредсказуемых всякое бывает.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921310
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА то у этих непредсказуемых всякое бывает.

ты имеешь в виду красноглазики?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921312
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КА то у этих непредсказуемых всякое бывает.

ты имеешь в виду красноглазики?

И их в том числе. :-))
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921364
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУА если посмотреть в Open XML SDK 2.5 Productivity Tool, как он генерируют автофит?Ок. Завтра посмотрю.
Конечно. Без OXSPT нонче никуда.

Алексей КМСУP.S. Да, проблема реально незыблема, можно ставить крест на Open XML Через 30 минут знакомства с ней возникла неразрешимая проблема. Что я должен про неё думать?
Забить и отдать эту хрень на откуп пользователю. Между прочим данная проблема даже в генераторах отчетах встречается, там тоже она обходится типа решения, которое ты привел. Видимо в движке экселя чего-то нездоровое намутили с этим свойством, хз. В общем фигня, не ипи себе моск. Продолжай дальше курить.

P.S. В рукопашку OpenXML не торт, только что-то типа этого http://codearticles.ru/articles/2419 не более.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921369
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУНе, ну я категорически против гавномакросов. Вопрос не ко мне :)
А чем те макросы не угодили?
Ты серьёзно или типа шуточки такие? :)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921375
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Через 30 минут знакомства с ней возникла неразрешимая проблема. Что я должен про неё думать?
Забить и отдать эту хрень на откуп пользователю.Это не наш метод. :-)
МСУМежду прочим данная проблема даже в генераторах отчетах встречается, там тоже она обходится типа решения, которое ты привел.Ок.
МСУВидимо в движке экселя чего-то нездоровое намутили с этим свойством, хз.Сцуки!
МСУВ общем фигня, не ипи себе моск. Продолжай дальше курить.Не ипу, продолжу. :-)
МСУP.S. В рукопашку OpenXML не торт, только что-то типа этого http://codearticles.ru/articles/2419 не более.Да, я вроде того делаю, простенький универсальный экспортер таблицы.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921377
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttпропущено...

А чем те макросы не угодили?
Ты серьёзно или типа шуточки такие? :)А зря ты так. Решение через макрос могло бы быть правильным, если бы не заморочки с безопасностью.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921407
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttпропущено...

А чем те макросы не угодили?
Ты серьёзно или типа шуточки такие? :)

Не шуточки, макросы хороший инструмент и прямых руках -- сила. А в кривых... ну чё уж тут говорить.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921422
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУВидимо в движке экселя чего-то нездоровое намутили с этим свойством, хз.Сцуки!

в доке написано, что BestFit это всего лишь рекомендация для экселя, но никак не указание. и я даже понимаю почему это именно так. с логикой у них всё в порядке.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921802
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей Кпропущено...
Сцуки!

в доке написано, что BestFit это всего лишь рекомендация для экселя, но никак не указание. и я даже понимаю почему это именно так. с логикой у них всё в порядке.Где-то писали, что это признак того, что ширина ячейки рассчитана Excel-ем автоматически. Разумеется, данный признак не обязывает рассчитывать ширину ещё раз. С логикой да, всё в порядке, отчётливо просвечивается желание авторов Excel упростить себе задачу и запутать разработчиков, вводя бесполезные свойства.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921880
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проси прощения у опен иксэмэля, холоп! :)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921904
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПроси прощения у опен иксэмэля, холоп! :) Нет!
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921916
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПроси прощения у опен иксэмэля, холоп! :)Как тебе хеловорд?
Код: 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.
    public class OpenXmlExcelTableExporter : IExcelTableExporter
    {
        public byte[] Execute(ExcelTableExporterModel model, IEnumerable data)
        {
            using (var result = new MemoryStream())
            {
                result.Write(Resources.EmptyTemplate, 0, Resources.EmptyTemplate.Length);
                result.Seek(0, SeekOrigin.Begin);

                using (var document = SpreadsheetDocument.Open(result, true))
                {
                    var sheet = document.WorkbookPart.WorksheetParts.First().Worksheet;
                    var sheetData = sheet.GetFirstChild<SheetData>();

                    var row = new Row();
                    sheetData.Append(row);

                    var cell = new Cell();
                    row.Append(cell);
                    cell.CellValue = new CellValue("Hello world!");
                    cell.DataType = CellValues.String;
                }

                return result.ToArray();
            }
        }
    }
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921951
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ККак тебе хеловорд?
Плохо...

Код: c#
1.
byte[] Execute
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38921972
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей ККак тебе хеловорд?
Плохо...

Код: c#
1.
byte[] Execute

Да я думал через временный файл делать, но что-то лень пока. Большие объёмы вроде не планируются.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922029
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДа я думал через временный файл делать, но что-то лень пока. Большие объёмы вроде не планируются.
Я про Stream :)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922034
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КДа я думал через временный файл делать, но что-то лень пока. Большие объёмы вроде не планируются.
Я про Stream :)Ну я понял. Сам по себе Stream не упёрся...
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922066
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей ККак тебе хеловорд?
Плохо...

Код: c#
1.
byte[] Execute



А чем плохо?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922078
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttА чем плохо?
Задайся вопросом, почему SpreadsheetDocument работает с потоком? Ответ - чтобы не пухла память на больших документах. Особенно, если документы формируются параллельно.

Алексей КНу я понял. Сам по себе Stream не упёрся...
Так дополни метод с выхлопом byte[] и реализацией MemoryStream.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922124
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttА чем плохо?
Задайся вопросом, почему SpreadsheetDocument работает с потоком? Ответ - чтобы не пухла память на больших документах. Особенно, если документы формируются параллельно.

Алексей КНу я понял. Сам по себе Stream не упёрся...
Так дополни метод с выхлопом byte[] и реализацией MemoryStream.
Большие объёмы вроде не планируются.

зы: Я пока не владею искусством создания временных файлов в Asp.Net. :-)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922129
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кзы: Я пока не владею искусством создания временных файлов в Asp.Net. :-)

Да, на ето способны только золотые мастера-гуру
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922167
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЗадайся вопросом, почему SpreadsheetDocument работает с потоком? Ответ - чтобы не пухла память на больших документах. Особенно, если документы формируются параллельно.

Да я в курсе, но если документы не большие, то можна и byte[]
А вот когда прилетит необходимость работы с большими документами, тогда закатываем рукава и рефакторим, рефакторим, рефакторим
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922186
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КБольшие объёмы вроде не планируются
Что мешает сразу написать по-человечески? )

Алексей Кзы: Я пока не владею искусством создания временных файлов в Asp.Net. :-)
В твоей задаче это не надо. Отдай поток на клиента.
Это что ж получается, если надо отдать клиенту HD фильм, то нужно готовить временный файл в пяток гигабайт? :)
http://codearticles.ru/articles/2445

P.S. Файлы в вебе генерят в крайнем случае. В отдельную папочку при сайте, имена файлов гуиды + последующая очистка (сразу или по расписанию). Ну или темповая директория.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922194
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДа я в курсе, но если документы не большие, то можна и byte[]
Можно, я не против. Но если много клиентов и все они в небольшой промежуток времени начнут подсирать память апп сервера, тоже ничего хорошего. В общем, по ситуации.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922257
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КБольшие объёмы вроде не планируются
Что мешает сразу написать по-человечески? )

Капитан очевидность шепчет: лееень
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922262
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttДа я в курсе, но если документы не большие, то можна и byte[]
Можно, я не против. Но если много клиентов и все они в небольшой промежуток времени начнут подсирать память апп сервера, тоже ничего хорошего. В общем, по ситуации.

Я всегда с потоками при генерации/обработке файлов работаю через временные файлы. Память слишком ценный ресурс, чтобы его разбазаривать на хранение потоков.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922266
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЭто что ж получается, если надо отдать клиенту HD фильм, то нужно готовить временный файл в пяток гигабайт? :)
http://codearticles.ru/articles/2445

Ты утрируешь. Если требуется конвертация, или, допустим, к видео надо налепить водяной знак качества, то без временного файла не обойтись. А просто отдать конечно надо напрямую потоком.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922309
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЯ всегда с потоками при генерации/обработке файлов работаю через временные файлы.
Научи этому теперь Алексея :)
hVosttПамять слишком ценный ресурс, чтобы его разбазаривать на хранение потоков.
Так потоки бывают не только MemoryStream. Хвост, учи матчасть уже, елки-палки

hVosttТы утрируешь. Если требуется конвертация, или, допустим, к видео надо налепить водяной знак качества, то без временного файла не обойтись.
С ходу так сказать не могу, но в целом да.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922329
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНаучи этому теперь Алексея :)

Да он всё умеет, только ленится и нос воротит

МСУТак потоки бывают не только MemoryStream. Хвост, учи матчасть уже, елки-палки

Да не, ты всё врёшь. Потоки бывают только MemoryStream
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922335
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, Алексею советовал бы почитать про великолепный класс PushStreamContent. Вот тут про асинхронный стримминг. То есть в идеале можно сделать вообще без файлов. На лету из потока в поток стриммимся. К примеру, есть у нас файл в БД (блоб, файл тейбл). Читаем его в Stream и сразу же стриммим клиенту. Ни память, ни левые темповые файлы не насилуют систему. Вот это высший пилотаж, братцы.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922370
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУпропущено...

Что мешает сразу написать по-человечески? )

Капитан очевидность шепчет: лееень Потому что нельзя делать сразу всё. :-)

Наверное переделаю потом на временный файл.

Так пойдёт для Asp.Net?
Код: c#
1.
Path.GetTempFileName + FileOptions.DeleteOnClose
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922375
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКстати, Алексею советовал бы почитать про великолепный класс PushStreamContent. Вот тут про асинхронный стримминг.Непонятно зачем это мне, но всё равно спасибо! :-)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922389
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТак пойдёт для Asp.Net?
Код: c#
1.
Path.GetTempFileName + FileOptions.DeleteOnClose


Подойдёт, конечно. Но всё-равно уныленько. Городить файлы там, где можно обойтись тупо потоком... ну я не знаю.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922391
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГородить файлы там, где можно обойтись тупо потоком... ну я не знаю.Я не пойму как тут обойтись без файла, если задача избавиться от MemoryStream.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922401
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТак пойдёт для Asp.Net?
Код: c#
1.
Path.GetTempFileName + FileOptions.DeleteOnClose



Да. Но лучше сделать менеджер временных файлов, на подобии кеша. Файлы выдаются под unisg (с удалением после использования) или под запрос, или на время с обязательной чисткой.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922406
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГородить файлы там, где можно обойтись тупо потоком... ну я не знаю.

Так это правильно. Файлы тоже работают быстро, особенно если потоки буфферизованные, так и гибче гораздо.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922418
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КТак пойдёт для Asp.Net?
Код: c#
1.
Path.GetTempFileName + FileOptions.DeleteOnClose



Да. Но лучше сделать менеджер временных файлов, на подобии кеша. Файлы выдаются под unisg (с удалением после использования) или под запрос, или на время с обязательной чисткой.Согласен, выдачу временных файлов лучше обернуть в отдельный сервис, отдавать сразу открытый FileStream c включенным DeleteOnClose.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922421
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУПроси прощения у опен иксэмэля, холоп! :)Как тебе хеловорд?
Код: 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.
    public class OpenXmlExcelTableExporter : IExcelTableExporter
    {
        public byte[] Execute(ExcelTableExporterModel model, IEnumerable data)
        {
            using (var result = new MemoryStream())
            {
                result.Write(Resources.EmptyTemplate, 0, Resources.EmptyTemplate.Length);
                result.Seek(0, SeekOrigin.Begin);

                using (var document = SpreadsheetDocument.Open(result, true))
                {
                    var sheet = document.WorkbookPart.WorksheetParts.First().Worksheet;
                    var sheetData = sheet.GetFirstChild<SheetData>();

                    var row = new Row();
                    sheetData.Append(row);

                    var cell = new Cell();
                    row.Append(cell);
                    cell.CellValue = new CellValue("Hello world!");
                    cell.DataType = CellValues.String;
                }

                return result.ToArray();
            }
        }
    }

А в интерфейсе это как выглядит? Ссылка на скачивание?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922425
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если скачивается какой-нибудь месячный отчёт, то при первом запросе сформировать и положить на диск.
Остальные будут получать уже готовый файл.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922430
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУГородить файлы там, где можно обойтись тупо потоком... ну я не знаю.Я не пойму как тут обойтись без файла, если задача избавиться от MemoryStream.
Объясни, зачем тебе файл? Чтобы клиент получил файл, вовсе не обязательно на сервере создавать файл. Прикинь :)

hVosttМСУГородить файлы там, где можно обойтись тупо потоком... ну я не знаю.
Так это правильно. Файлы тоже работают быстро, особенно если потоки буфферизованные, так и гибче гораздо.
Так-то. Просто есть у тебя есть Stream, глупо создавать файл и отдавать его клиенту. Не проще ли сразу отдать Stream? :)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922433
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Котдавать сразу открытый FileStream c включенным DeleteOnClose.
Эпический гавнокод
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922438
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТак-то оно так. Просто если у тебя есть Stream, глупо создавать файл и отдавать его клиенту. Не проще ли сразу отдать Stream? :)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922441
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА в интерфейсе это как выглядит? Ссылка на скачивание?Да, ссылка на скачивание файла.
skyANAЕсли скачивается какой-нибудь месячный отчёт, то при первом запросе сформировать и положить на диск.
Остальные будут получать уже готовый файл.Пока файлы планируем генерировать на момент запроса.

Тяжёлые месячные отчёты мы обычно формируем джобом и храним в "виде данных" в БД. Хранить отчёты в excel-виде пока не было необходимости.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922453
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТяжёлые месячные отчёты мы обычно формируем джобом и храним в "виде данных" в БД. Хранить отчёты в excel-виде пока не было необходимости.
Хоспади, когда же вы в свой ларёк наймете биайщика, который запилит вам честный куб, процессинг и ETL :)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922454
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Я не пойму как тут обойтись без файла, если задача избавиться от MemoryStream.
Объясни, зачем тебе файл? Чтобы клиент получил файл, вовсе не обязательно на сервере создавать файл. Прикинь :)

hVosttпропущено...

Так это правильно. Файлы тоже работают быстро, особенно если потоки буфферизованные, так и гибче гораздо.
Так-то. Просто есть у тебя есть Stream, глупо создавать файл и отдавать его клиенту. Не проще ли сразу отдать Stream? :)Ну ты же сам сказал "чтобы не засирать память веб-сервера" (ц), с чем я согласен.

Иначе какой смысл отказываться от byte[]?

зы: Код базового контроллера пока такой:
Код: 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.
    public abstract class ExcelTableApiController<TData, TFilter> : ApiController
        where TData : IEnumerable
    {
        public IExcelTableRepository<TData, TFilter> Repository { get; set; }

        public IExcelTableExporter Exporter { get; set; }

        public virtual IHttpActionResult GetExcelIndexByFilter(string filter)
        {
            var parsedFilter = JsonConvert.DeserializeObject<TFilter>(filter);
            var data = Repository.GetExcelTableByFilter(parsedFilter);
            var model = GetModel();
            var content = Exporter.Execute(model, data);
            var fileName = Path.ChangeExtension(model.Name, ".xlsx");

            return new DownloadActionResult
            {
                Content = new MemoryStream(content),
                FileName = fileName
            };
        }

        protected abstract ExcelTableExporterModel GetModel();
    }
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922455
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAА в интерфейсе это как выглядит? Ссылка на скачивание?Да, ссылка на скачивание файла.
skyANAЕсли скачивается какой-нибудь месячный отчёт, то при первом запросе сформировать и положить на диск.
Остальные будут получать уже готовый файл.Пока файлы планируем генерировать на момент запроса. Тогда достаточно в Response передать поток, временный файл не обязательно создавать.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922458
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Да, ссылка на скачивание файла.
пропущено...
Пока файлы планируем генерировать на момент запроса. Тогда достаточно в Response передать поток, временный файл не обязательно создавать.Да я знаю, просто речь зашла о больших документах, не влезающих в память сервера.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922459
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу ты же сам сказал "чтобы не засирать память веб-сервера" (ц), с чем я согласен.
Ну так всё правильно. Теперь ты память не засираешь, уже хорошо. Но файл тут зачем?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922461
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Тогда достаточно в Response передать поток, временный файл не обязательно создавать.Да я знаю, просто речь зашла о больших документах, не влезающих в память сервера.
Причем тут память сервера? Память мы уже проехали, ты вкурил, что в память какать не хорошо. Теперь идет спич о файл vs поток
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922464
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так допусти спашника до серверного программирования...
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922467
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
Тогда достаточно в Response передать поток, временный файл не обязательно создавать.Да я знаю, просто речь зашла о больших документах, не влезающих в память сервера.А Controller.File Method (Stream, String) в память сервера пишет?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922468
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если задача будет запилить честный сервлетик, взамен умирающего ASP.NET? Поэтому хватит игр, переходим на правильные платформы.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922478
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Да я знаю, просто речь зашла о больших документах, не влезающих в память сервера.А Controller.File Method (Stream, String) в память сервера пишет?Ну сгенерированный excel-документ где должен храниться?

Варианты:
1. byte[] или MemoryStream.
2. FileStream.

Понятно, что эти данные будут потом отданы на скачивание чем-то вроде того, на что ты дал ссылку.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922480
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНу ты же сам сказал "чтобы не засирать память веб-сервера" (ц), с чем я согласен.
Ну так всё правильно. Теперь ты память не засираешь, уже хорошо. Но файл тут зачем? Ты сам заговорил про большие документы, не влезающие в оперативку сервера.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922486
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
А Controller.File Method (Stream, String) в память сервера пишет?Ну сгенерированный excel-документ где должен храниться?

Варианты:
1. byte[] или MemoryStream.
2. FileStream.

Понятно, что эти данные будут потом отданы на скачивание чем-то вроде того, на что ты дал ссылку.Response.OutputStream?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922494
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Ну сгенерированный excel-документ где должен храниться?

Варианты:
1. byte[] или MemoryStream.
2. FileStream.

Понятно, что эти данные будут потом отданы на скачивание чем-то вроде того, на что ты дал ссылку.Response.OutputStream?Заманчиво, но боюсь без промежуточного буфера не получится. Там пока концепция такая:

1. Пишем в поток заранее заготовленный excel-шаблон.
2. Делаем Seek(0, SeekOrigin.Begin)
3. Открываем SpreadsheetDocument.
4. Правим SpreadsheetDocument.
5. Сохраняем SpreadsheetDocument, вызвав его Dispose.

Боюсь, что Response.OutputStream не умеет Seek. :-)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922514
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...
Ну так всё правильно. Теперь ты память не засираешь, уже хорошо. Но файл тут зачем? Ты сам заговорил про большие документы, не влезающие в оперативку сервера.
new File(Stream) - какая оперативка? какие файлы? :)

Алексей КБоюсь, что Response.OutputStream не умеет Seek. :-)
Что ты куришь, бро? :) https://msdn.microsoft.com/ru-ru/library/system.io.stream.seek(v=vs.110).aspx
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922518
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КБоюсь, что Response.OutputStream не умеет Seek. :-)
Что ты куришь, бро? :) https://msdn.microsoft.com/ru-ru/library/system.io.stream.seek(v=vs.110).aspx

Алексей прав.

https://msdn.microsoft.com/ru-ru/library/system.io.stream.canseek(v=vs.110).aspx

не все потоки могут делать Seek
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922528
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУпропущено...

Что ты куришь, бро? :) https://msdn.microsoft.com/ru-ru/library/system.io.stream.seek(v=vs.110).aspx

Алексей прав.

https://msdn.microsoft.com/ru-ru/library/system.io.stream.canseek(v=vs.110).aspx

не все потоки могут делать Seek

Так там поток от SpreadsheetDocument, он это умеет делать 100%.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922532
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУпропущено...

Что ты куришь, бро? :) https://msdn.microsoft.com/ru-ru/library/system.io.stream.seek(v=vs.110).aspx

Алексей прав.

https://msdn.microsoft.com/ru-ru/library/system.io.stream.canseek(v=vs.110).aspx

не все потоки могут делать SeekМожно конечно попробовать отказаться от необходимости Seek, но хрен его знает...
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922534
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ну вы что, какой Seek. Пишем chunk в OutputStream, делаем Flush.
Алексею пока не подходит :) Код надо переписывать.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922536
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttпропущено...


Алексей прав.

https://msdn.microsoft.com/ru-ru/library/system.io.stream.canseek(v=vs.110).aspx

не все потоки могут делать Seek

Так там поток от SpreadsheetDocument, он это умеет делать 100%.skyANA предложил, чтобы SpreadsheetDocument писал сразу в Response.OutputStream. Ты всё перепутал!
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922539
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДа ну вы что, какой Seek. Пишем chunk в OutputStream, делаем Flush.
Алексею пока не подходит :) Код надо переписывать.Да там переписать не проблема, масштабы пока не те. :-)

Сделаю пока чтобы хоть как-то работало, потом буду бантики добавлять. Меня пока больше беспокоит расчёт ширины колонок. :-)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922615
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сцуко, а ведь SpreadsheetDocument на Response.OutputStream не приготовишь... http://stackoverflow.com/questions/17888076/openxml-cannot-open-package-because-filemode-or-fileaccess-value-is-not-valid-fo

Как-то надо выкручиваться через пакеты из System.IO.Packaging. Как вариант OpenXmlPackage. Но как, пока не разобрался. Остаётся пока оверхедить в память или файл.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922776
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСцуко, а ведь SpreadsheetDocument на Response.OutputStream не приготовишь... http://stackoverflow.com/questions/17888076/openxml-cannot-open-package-because-filemode-or-fileaccess-value-is-not-valid-fo

Как-то надо выкручиваться через пакеты из System.IO.Packaging. Как вариант OpenXmlPackage. Но как, пока не разобрался. Остаётся пока оверхедить в память или файл.Ипать, зато умные все вокруг, про Response.OutputStream знают...
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922786
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Stream.Null работает, но вот как потом из спредшита снять поток... Ушлепки опен иксэмэльные! MS точно сгибается, надо в Java валить :)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38922856
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНа Stream.Null работает, но вот как потом из спредшита снять поток...Забей. :-)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38923002
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСцуко, а ведь SpreadsheetDocument на Response.OutputStream не приготовишь... http://stackoverflow.com/questions/17888076/openxml-cannot-open-package-because-filemode-or-fileaccess-value-is-not-valid-fo

Как-то надо выкручиваться через пакеты из System.IO.Packaging. Как вариант OpenXmlPackage. Но как, пока не разобрался. Остаётся пока оверхедить в память или файл.

не всё то сикается, что стрим
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38923006
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУУшлепки опен иксэмэльные! MS точно сгибается, надо в Java валить :)

та не, надо покупать нормальные компоненты, они те и носки постирают, и кофе сварят, и эстетически удовлетворят. а халява-сэр, хоть и сладка как уксус, но таки за что не заплатил, то и получи!
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38923171
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фиг с вами, убедили :) Но, всё-равно, это нечестно и кривожопно!

Код: html
1.
@Html.ActionLink("Скачать файл", "GetFile", "Home")



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public ActionResult GetFile()
{
    var stream = new MemoryStream(); // todo FileStream

    using (var spreadsheet = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook))
    {
        var workbookPart = spreadsheet.AddWorkbookPart();
        workbookPart.Workbook = new Workbook { Sheets = new Sheets() };

        var sheetPart = workbookPart.AddNewPart<WorksheetPart>();
        sheetPart.Worksheet = new Worksheet(new SheetData());

        var sheet = new Sheet { Id = workbookPart.GetIdOfPart(sheetPart), SheetId = 1, Name = "Лист" };
        workbookPart.Workbook.Sheets.Append(sheet);
    }

    stream.Position = 0; 
    return File(stream, "application/vnd.ms-excel", "report.xlsx");
}
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38924421
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отпишу навсякий...

Не понравилась мне эта формула для расчёта ширины колонки. Остановился пока на такой формуле:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
        public double GetCellWidth(SpreadsheetDocument document, Cell cell)
        {
            var cellText = GetCellText(document, cell);

            if (string.IsNullOrEmpty(cellText))
                return 0.0;

            using (var font = GetCellDrawingFont(document, cell))
            {
                double textWidth = Graphics.MeasureString(cellText, font).Width;

                double maxDigitWidth = Enumerable
                    .Range(0, 10)
                    .Max(i => Graphics.MeasureString(i.ToString(), font).Width);

                return (textWidth + 5.0) * 1.75 / maxDigitWidth;
            }
        }
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38924485
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

отличный способ. щас МСУ утянет его в свои рецепты
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38924494
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей К,

отличный способ. щас МСУ утянет его в свои рецепты Я не понял, это похвала или сарказм? :-)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38924536
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс... :-)

Предыдущая формула не работает для разных размеров шрифтов. Ниже исправленный вариант, навсякий...

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
        public double GetCellWidth(SpreadsheetDocument document, Cell cell)
        {
            var cellText = GetCellText(document, cell);

            if (string.IsNullOrEmpty(cellText))
                return 0.0;

            using (var cellDrawingFont = GetCellDrawingFont(document, cell))
            using (var defaultDrawingFont = GetDefaultDrawingFont(document))
            {
                double cellTextWidth = Graphics.MeasureString(cellText, cellDrawingFont).Width;

                double maxDigitWidth = Enumerable
                    .Range(0, 10)
                    .Max(i => Graphics.MeasureString(i.ToString(), defaultDrawingFont).Width);

                return (cellTextWidth + 5.0) * 1.75 / maxDigitWidth;
            }
        }
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38924557
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttАлексей К,

отличный способ. щас МСУ утянет его в свои рецепты Я не понял, это похвала или сарказм? :-)

я серьёзно, это рекомендация для МСУ
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38924562
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей Кпропущено...
Я не понял, это похвала или сарказм? :-)

я серьёзно, это рекомендация для МСУ Ок :-)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38925219
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наезды на кодартиклес?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38925220
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНаезды на кодартиклес?

ещё один недоверчивый...

говорю, нормальный рецепт, забирай в коллекцию!
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38925343
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУНаезды на кодартиклес?

ещё один недоверчивый...

говорю, нормальный рецепт, забирай в коллекцию! Довели человека.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38925384
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, отпылесосил
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38925658
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЛадно, отпылесосил

чем-ты код подсвечиваешь? неужели копипастом с форматом?
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38925663
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttчем-ты код подсвечиваешь? неужели копипастом с форматом?
Конечно, ckeditor отлично с этим справляется. Получается как в оригинале.
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38925670
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКонечно, ckeditor отлично с этим справляется. Получается как в оригинале.

это ужасно

https://github.com/isagalaev/highlight.js

отечественная разработка рекомендую
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38925676
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУКонечно, ckeditor отлично с этим справляется. Получается как в оригинале.
это ужасно
Вовсе нет, это удобно. Откуда не копируешь (C#, Java, XML, SQL и так далее), ты получаешь 100% копию. Ни один хайлайтер не осилит того, что может ckeditor + буфер обмена.

hVostt https://github.com/isagalaev/highlight.js
отечественная разработка рекомендую
Ок, но не для рецептов :)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38925783
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУКонечно, ckeditor отлично с этим справляется. Получается как в оригинале.

это ужасно

https://github.com/isagalaev/highlight.js

отечественная разработка рекомендую SyntaxHighlighter ? Тоже отечественная, судя по фамилии автора. :-)
...
Рейтинг: 0 / 0
Топик ненависти к Open XML SDK
    #38926188
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К SyntaxHighlighter ? Тоже отечественная, судя по фамилии автора. :-)

Угу, наши вообще помешаны на синтаксисе и подсветке. Это ещё пошл со времён colorer 4ever для FAR-а
...
Рейтинг: 0 / 0
112 сообщений из 112, показаны все 5 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Топик ненависти к Open XML SDK
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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