Експорт книги excel в blob поле бд і назад

Експорт книги Excel в BLOB поле БД і назад

Вітаю!
Зіткнувся з певною проблемою при роботі з Excel. В БД є BLOB поле. необхідно зберегти туди відомість в форматі EXCEL а потім при необхідності виводити її назад.
Не можу реалізувати це дійство. Допоможіть хто знає як це можливо реалізувати (бажано з прикладом).
Заздалегідь вдячний!

Чи не змінюється звичайно, взагалі нічого не змінюється, потрібна СУБД

СУБД є, мені потрібно знати як саме реалізувати завантаження в неї файлу excel і вивантаження в excel назад.

Взагалі то не видно.

Хмм щось я напевно не розумію.
Якщо не грамотно поставлено питання то так і поясніть, поки що мені це нагадує спілкування як в анекдоті про прилади.

Анекдот про прилади приводити не треба, ми його знаємо, ти його знаєш, а ведеш себе як в анекдоті.

Anatoly Podgoretsky спасибі за вичерпні відповіді

У Акцесс є три поля типу "BLOB"
# XA0; Binary
# XA0; Image
# XA0; Text
Використовувати можна перший і другий, залежить від багатьох причин. Якщо ти хочеш працювати як з об'єктом OLE, тоді другий. Якщо як з набором байтів, то перший.

Ну в цілому мене взагалі запити в конкретних СУБД мало цікавлюся. Для цього існує купа вичерпної інформації.
Питання стоїть як в blob поле набору даних помістити excel таблицю і вивантажити її потім назад в excel.
Якщо конкретизувати ще більше, то як в поле Fields [n] об'єкта TADOTable палітри інструментів dbGo (де n - номер поля) помістити xls файл і як його потім можна загнати назад в excel. хоча друга частина менш значима так як створення OLE об'єкта більш тривіальна задача.

TBlobField + F1 / Google Прикладів жувати НЕ пережувати.

PS. Пояснюю основи програмування - дорого.


> Як загнати в blob поле картинку я знаю, для цього можна
> Скористатися TDBImage

Травня плякать.

А я теж не знаю, я не працюю з Акцесс, я його зовсім не знаю, я працюю з
кодом.


Сreate Tbl (MyBLob binary)


> Можна скористатися TDBImage

З цим взагалі просто. Ctrl + C - Ctrl + V

У демос навіть приклади є, наприклад Animal, я грався - працює.

Хмм ну я думаю приведу все-таки свій код авось це допоможе гуру.

procedure TForm1.Button1Click (Sender: TObject);
begin
# XA0; OpenDialog1.Execute ();
end;
Ну тут ніби все зрозуміло відкриваю діалог, вибираю файл.

procedure TForm1.Button2Click (Sender: TObject);
var
# XA0; i: integer;
# XA0; BLOBStream. TADOBlobStream;
begin
# XA0; ADOTable1.Active: = True;
# XA0; ADOTable1.First;
# XA0; for i: = 0 to ADOTable1.RecordCount - 1 do
# XA0; Begin
# XA0; # XA0; ADOTable1.Delete;
# XA0; # XA0; ADOTable1.Next;
# XA0; End;
# XA0; ADOTable1.Insert;
# XA0; ADOTable1.FieldByName ( "Найменування"). Text: = "Файл";
# XA0; BLOBStream: = TADOBlobStream.Create (TBlobField (ADOTable1.FieldByName ( "Файл")), bmWr ite);
# XA0; BLOBStream.LoadFromFile (OpenDialog1.FileName);
# XA0; BLOBStream.Free;
# XA0; ADOTable1.post;
# XA0; ADOTable1.Active: = False;
end;

Тут теж нічого не зрозумілого немає, але щось мене тут бентежить. Ідея полягала в тому, щоб при натисканні кнопки вибраний файл через потік вганяє в таблицю. Перед цим всі записи в таблиці видаляються (Для зручності, щоб не гумором з декількома записами).

procedure TForm1.Button3Click (Sender: TObject);
var
# XA0; BLOBStream. TADOBlobStream;

# XA0; ADOTable1.Active: = True;
# XA0; ADOTable1.First;
# XA0; Edit1.Text: = ADOTable1.Fields [2] .Text;
# XA0; ADOTable1.Edit;
# XA0; BLOBStream: = TADOBlobStream.Create ((ADOTable1.Fields [3] as TBlobField), bmReadWrite);
# XA0; BLOBStream.SaveToFile ( "test.xml");
# XA0; BLOBStream.Free;
# XA0; ADOTable1.Active: = False;
end;

І ніби як ось тут має заганяти все в EXCEL файл, але при спробі його потім відкрити видає помилку. В принципі у мене виникають тільки 2 відповіді на це питання:
1) Я неправильно загнав файл спочатку в таблицю
2) Я неправильно його вивантажують, тобто НЕ ініціалізується додаток EXCEL (щось на зразок createoleobject (Excel.Application)) ну і т.д.
Якщо причина друга то підкажіть плиз як грамотно з потоку потім вставити в файл після створення нової книги EXCEL.
Знову ті заздалегідь вдячний.


> Видає помилку

Це текст повідомлення про помилку.

І це, викинь ADOTable

Текст повідомлення про помилку: "Неможливо прочитати файл". Цей текст видає EXCEL а Дельфах нічого не видає, з її точки зору всі операції виконалися, але судячи з результатів відкриття файлу щось тут не так))
А з приводу ADOTable яж ще вгорі написав що взяв для прикладу ACCESS а з'єднання по ADO тут найзручніше мені здається.

А туди є права, а при іншому запуску?

> # XA0; BLOBStream.SaveToFile ( "test.xml");

Права є, судячи з усього він чомусь не хоче переганяти файл з бінарних значень в EXCEL. млинець другий день мучуся

Все розібрався. У коді всього 1 помилка замість test.xml потрібно test.xls
Всім величезне спасибі

Кажеш є, а на яку папку, а в інший момент часу теж є?


> Текст повідомлення про помилку: "Неможливо прочитати файл".
> Цей текст видає EXCEL а Дельфах нічого не видає, з її
> Точки зору всі операції виконалися, але судячи з результатів
> Відкриття файлу щось тут не так))

як-то робив завантаження в базу файлу і вивантаження, формат dot - відкриваю блокнотом - все нормально, програма, яка користується ним - ніфіка, лається. виявилося весело - в кінець кожного рядка додавався символ кінець сторінки - # 12, ось. тільки я не пам'ятаю, хто його туди заганяв - вантажилися файли прогой, написаної на дельфи. а вигражалісь C #. може, у тебе подібна хрень?

Пам'ять: 0.78 MB
Час: 0.06 c

Схожі статті