|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
Ребята, привет. В MS SQL есть таблица, которая хранит в себе EXCEL файлы в виде двоичного кода (тип поля varbinary(max)). У меня вопрос: Можно ли как-нибудь, средствами SQL получить доступ к данным двоичного файла EXCEL , не выгружая (формируя) его в EXCEL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2020, 17:24 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
boyarinroman Ребята, привет. В MS SQL есть таблица, которая хранит в себе EXCEL файлы в виде двоичного кода (тип поля varbinary(max)). У меня вопрос: Можно ли как-нибудь, средствами SQL получить доступ к данным двоичного файла EXCEL , не выгружая (формируя) его в EXCEL ? У Excel несколько форматов хранения. Один из них -- неупакованный XML. Вот до него вы теоретически cможете добраться XML-функционалом из MSSQL. Но форматом по умолчанию является набор XML упакованный в ZIP. Такому файлу вообще можно сменить расширение на zip и открыть zip-ом или WinRar-ом. В общем если там не чистый XML, то как минимум придется CLR писать. https://www.sql.ru/forum/1325823/ssis-script-task-kak-dobratsya-do-obektnoy-modeli-excel ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2020, 17:43 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
boyarinroman, Библиотека EPPLus может загружать Excel прямо из стима. Не требует установки Excel на сервере. Есть масса примеров. Версии до 5.0 бесплатны. Думаю, Вы можете написать CLR функцию, которая бы вынимала данные из полей не выгружая в файлы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 10:11 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
А никто не пробовал развернуть такой Excel до XML с помощью DECOMPRESS? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 10:29 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
a_voronin А никто не пробовал развернуть такой Excel до XML с помощью DECOMPRESS? Зачем, дарагой? [System.IO.Compression.ZipFile]::OpenRead( $fileZIP ) незатейливо откроет его содержимое для чтения, как обычные файлы в папке. ЗЫ. В теории, Windows имеет возможность читать-писать сжатые ZIP-папки. ZIP-файл :\Gate\In\Costa\XML>dir "ExportItineraryAndSteps_Pacific Asia.xml.zip" Том в устройстве C имеет метку System Серийный номер тома: 540E-56D7 Содержимое папки C:\Gate\In\Costa\XML 7.06.2020 10:01 2 344 ExportItineraryAndSteps_Pacific Asia.xml.zip 1 файлов 2 344 байт 0 папок 70 009 847 808 байт свободно ================================= Содержимое ZIP-файла :\Gate\In\Costa\XML>dir "ExportItineraryAndSteps_Pacific Asia.xml" Том в устройстве C имеет метку System Серийный номер тома: 540E-56D7 Содержимое папки C:\Gate\In\Costa\XML 7.06.2020 10:01 36 227 ExportItineraryAndSteps_Pacific Asia.xml 1 файлов 36 227 байт 0 папок 70 011 420 672 байт свободно ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 10:48 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
a_voronin А никто не пробовал развернуть такой Excel до XML с помощью DECOMPRESS? А что это даст? Ведь Excel файл ничто иное как ZIP архив с несколькими файлами и папками. Не проще использовать EPPLus? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 10:50 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
a_voronin А никто не пробовал развернуть такой Excel до XML с помощью DECOMPRESS? ЗЫ: просто переименуйте *.xlsx на *.zip и открывайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 10:52 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
Alexander Us a_voronin А никто не пробовал развернуть такой Excel до XML с помощью DECOMPRESS? ЗЫ: просто переименуйте *.xlsx на *.zip и открывайте. Открыть с помощью DECOMPRESS байты, которые лежать в varbinary(MAX) поле в БД. DECOMPRESS это функция в MSSQL. https://docs.microsoft.com/en-us/sql/t-sql/functions/decompress-transact-sql?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 11:11 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
a_voronin, Согласен, открыть можно. Но что делать потом, ведь Вы откроете не один xml файл, а целую папку. Или я не понял Вашу идею? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 11:27 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
Alexander Us a_voronin, Согласен, открыть можно. Но что делать потом, ведь Вы откроете не один xml файл, а целую папку. Или я не понял Вашу идею? Наверное, есть желание лежащие внутри xlsx xml-файлы разбирать с помощью XQuery. Это крайне хлопотное дело в плане интерпретации результатов, т.к. в ECMA-376 part.1 описание SpreadsheetML занимает более 900 страниц. Действительно, лучше уж EPPlus. Alexander Us Версии до 5.0 бесплатны. И от 5.0 тоже бесплатны, надо только в начале работы установить Код: c# 1.
Ну, и к тому же у ТСа в базе может храниться обычный старый xls, который не конвертируется ни в какой XML, и тут уже без выгрузки никак. И EPPlus здесь тоже не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 11:39 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
aleks222, С парзингом экселей с помощью C# проблем ни на секунду нет. С диска или из потока -- один хрен. Вот парзануть в контексте SQL запроса из varbinary поля с помощью MSSQL функций, вот это более интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 12:15 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
Сон Веры Павловны Наверное, есть желание лежащие внутри xlsx xml-файлы разбирать с помощью XQuery. Это крайне хлопотное дело в плане интерпретации результатов, т.к. в ECMA-376 part.1 описание SpreadsheetML занимает более 900 страниц. Действительно, лучше уж EPPlus. Понятно, что Open XML Document или EPPlus парзанут без вопросов версии от 2003 года в любых форматах, но не формат до 1997 года. Как правило, чтобы парзануть данные нужно добраться до листа и словаря строк. тот, кто понимает структуру формата Эксель от 2003, должен это без проблем сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 12:19 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
a_voronin Как правило, чтобы парзануть данные нужно добраться до листа и словаря строк. тот, кто понимает структуру формата Эксель от 2003, должен это без проблем сделать. Ну, в принципе BIFF8 документирован - Microsoft сама выложила его спецификацию , хотя и в ней 300 страниц описания байтовых сдвигов. Однако, мир не без добрых людей - можно внутри CLR-функции cчитать бинарный xls в DataSet, который потом сериализовать в XML через WriteXml, а последний уже читать с помощью XQuery. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 13:30 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
a_voronin, Вот именно это я и хочу сделать. Кто бы проконсультировал бы... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 14:12 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
a_voronin aleks222, С парзингом экселей с помощью C# проблем ни на секунду нет. С диска или из потока -- один хрен. Вот парзануть в контексте SQL запроса из varbinary поля с помощью MSSQL функций, вот это более интересно. Вот именно это я и хочу сделать. Кто бы проконсультировал бы... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 14:12 |
|
Доступ к данным из двоичного файла ECXEL
|
|||
---|---|---|---|
#18+
boyarinroman a_voronin, Вот именно это я и хочу сделать. Кто бы проконсультировал бы... Я рекомендую вам написать CLR. которая использует OpenXmlDocument. https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk Хотя сама идея изначально держать эксели в БД не очень хорошая. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2020, 15:04 |
|
|
start [/forum/topic.php?fid=46&msg=39970066&tid=1685975]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
315ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 694ms |
0 / 0 |