powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Доступ к данным из двоичного файла ECXEL
16 сообщений из 16, страница 1 из 1
Доступ к данным из двоичного файла ECXEL
    #39969851
boyarinroman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, привет.

В MS SQL есть таблица, которая хранит в себе EXCEL файлы в виде двоичного кода (тип поля varbinary(max)).

У меня вопрос:

Можно ли как-нибудь, средствами SQL получить доступ к данным двоичного файла EXCEL , не выгружая (формируя) его в EXCEL ?
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39969860
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970053
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boyarinroman,

Библиотека EPPLus может загружать Excel прямо из стима.
Не требует установки Excel на сервере.
Есть масса примеров.
Версии до 5.0 бесплатны.

Думаю, Вы можете написать CLR функцию, которая бы вынимала данные из полей не выгружая в файлы.
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970059
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никто не пробовал развернуть такой Excel до XML с помощью DECOMPRESS?
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970065
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 байт свободно
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970066
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
А никто не пробовал развернуть такой Excel до XML с помощью DECOMPRESS?

А что это даст? Ведь Excel файл ничто иное как ZIP архив с несколькими файлами и папками.
Не проще использовать EPPLus?
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970069
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
А никто не пробовал развернуть такой Excel до XML с помощью DECOMPRESS?

ЗЫ: просто переименуйте *.xlsx на *.zip и открывайте.
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970079
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970096
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin,

Согласен, открыть можно. Но что делать потом, ведь Вы откроете не один xml файл, а целую папку.
Или я не понял Вашу идею?
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970103
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Us
a_voronin,

Согласен, открыть можно. Но что делать потом, ведь Вы откроете не один xml файл, а целую папку.
Или я не понял Вашу идею?

Наверное, есть желание лежащие внутри xlsx xml-файлы разбирать с помощью XQuery. Это крайне хлопотное дело в плане интерпретации результатов, т.к. в ECMA-376 part.1 описание SpreadsheetML занимает более 900 страниц. Действительно, лучше уж EPPlus.
Alexander Us
Версии до 5.0 бесплатны.

И от 5.0 тоже бесплатны, надо только в начале работы установить
Код: c#
1.
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;


Ну, и к тому же у ТСа в базе может храниться обычный старый xls, который не конвертируется ни в какой XML, и тут уже без выгрузки никак. И EPPlus здесь тоже не поможет.
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970119
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

С парзингом экселей с помощью C# проблем ни на секунду нет. С диска или из потока -- один хрен.


Вот парзануть в контексте SQL запроса из varbinary поля с помощью MSSQL функций, вот это более интересно.
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970123
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны

Наверное, есть желание лежащие внутри xlsx xml-файлы разбирать с помощью XQuery. Это крайне хлопотное дело в плане интерпретации результатов, т.к. в ECMA-376 part.1 описание SpreadsheetML занимает более 900 страниц. Действительно, лучше уж EPPlus.


Понятно, что Open XML Document или EPPlus парзанут без вопросов версии от 2003 года в любых форматах, но не формат до 1997 года. Как правило, чтобы парзануть данные нужно добраться до листа и словаря строк. тот, кто понимает структуру формата Эксель от 2003, должен это без проблем сделать.
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970166
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
Как правило, чтобы парзануть данные нужно добраться до листа и словаря строк. тот, кто понимает структуру формата Эксель от 2003, должен это без проблем сделать.

Ну, в принципе BIFF8 документирован - Microsoft сама выложила его спецификацию , хотя и в ней 300 страниц описания байтовых сдвигов. Однако, мир не без добрых людей - можно внутри CLR-функции cчитать бинарный xls в DataSet, который потом сериализовать в XML через WriteXml, а последний уже читать с помощью XQuery.
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970902
boyarinroman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin,

Вот именно это я и хочу сделать. Кто бы проконсультировал бы...
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970903
boyarinroman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voronin
aleks222,

С парзингом экселей с помощью C# проблем ни на секунду нет. С диска или из потока -- один хрен.


Вот парзануть в контексте SQL запроса из varbinary поля с помощью MSSQL функций, вот это более интересно.



Вот именно это я и хочу сделать. Кто бы проконсультировал бы...
...
Рейтинг: 0 / 0
Доступ к данным из двоичного файла ECXEL
    #39970931
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boyarinroman
a_voronin,

Вот именно это я и хочу сделать. Кто бы проконсультировал бы...


Я рекомендую вам написать CLR. которая использует OpenXmlDocument.

https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk

Хотя сама идея изначально держать эксели в БД не очень хорошая.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Доступ к данным из двоичного файла ECXEL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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