Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Запись в Excel и из Excel


Автор: evgenybe 18.10.2007, 12:20
Есть программа которая должна делать следующее:

1) Взять картинку из поля БД и поместить ее в ячейку Excel.
2) Имея URL картинки в интернете - поместить ее в ячейку Excel
3) Взять картинку с диска и поместить ее в ячейку Excel.

И обратные задачи:

4) Взять картинку из ячейки Excel и записать ее в поле базы данных.
5) Взять картинку из ячейки Excel и записать ее в виде файла на диск.

Как это сделать?

Автор: thomas 18.10.2007, 20:59
evgenybe, 
Для начала почитать про http://www.gotdotnet.ru/LearnDotNet/NETFramework/22054.aspx

Автор: evgenybe 19.10.2007, 11:54
Цитата(thomas @ 18.10.2007,  20:59)
evgenybe, 
Для начала почитать про http://www.gotdotnet.ru/LearnDotNet/NETFramework/22054.aspx

Это то же самое, что на любой вопрос по VB.Net ответить "Для начала почитать про VB.Net"

Автор: Experimenter 22.10.2007, 19:14
Цитата

Это то же самое, что на любой вопрос по VB.Net ответить "Для начала почитать про VB.Net"
тебе ссылку реальную дали, с примерами, а ты возмущаешься. Ты по ней сходил?

Автор: evgenybe 23.10.2007, 08:08
Цитата(Experimenter @  22.10.2007,  19:14 Найти цитируемый пост)
тебе ссылку реальную дали, с примерами, а ты возмущаешься. Ты по ней сходил?


Ну, елки зеленые! Я вообще не понял, что это ссылка. Нет, конечно, если бы я мышку туда подвел, то догадался бы. Но поскольку линк черного, а не привычного синего, цвета, то я подумал, что это просто подчеркнутое слово в тексте и у меня даже рука не дернулась подвести туда мышку. Впредь буду знать!

Так что извиняюсь и smile 
Спасибо!

Автор: pompei 23.10.2007, 08:33
О, смотрите... всеми уважаемый гугл до спама опустился!!!

Автор: pompei 23.10.2007, 10:09
А кто-нибудь запись макросов использует чтобы узнать как делать то или другое с экзелем?
Я например сделал так:
Начал запись макроса, и вставил картинку, расположил её как надо, потом остановил запись мактора и посмотрел на него. Вот чё получилось в макросе:
Код

Sub Макрос1()
    ActiveSheet.Pictures.Insert("D:\Download\Photo\GG\003\1-webbig.jpg").Select
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 1
    Selection.ShapeRange.ScaleWidth 0.46, msoFalse, msoScaleFromBottomRight
    Selection.ShapeRange.ScaleHeight 0.46, msoFalse, msoScaleFromBottomRight
    Selection.ShapeRange.IncrementLeft -489.75
    Selection.ShapeRange.IncrementTop -358.5
    ' Это я сам добавил, чтобы посмотреть значения констант, при выполнении макроса
    msgbox "msoScaleFromBottomRight = " & str(msoScaleFromBottomRight)
    ... и другие константы
End Sub

Вот. Теперь я например в Делфи делаю так:
Код

...
uses ..., Variants, ComObj, ...;
...
Procedure asd;
Var Doc : OLEVariant;
Const msoScaleFromBottomRight = то что высветилось из макроса
... другие константы также
Begin
  // Этот код я долгими пытками вымастрячил
  Doc := CreateOleObject( 'Excel.Application' );
  Doc.Visibility := True;
  Doc.Workbooks.Add;
  Doc.Workbooks[1].Worksheets[1].Activate;

  // а дальше тупо копипастим из макроса, только синтаксис корректируем под паскалевский
  Doc.ActiveSheet.Pictures.Insert('D:\\Download\\Photo\\GG\\003\\1-webbig.jpg').Select;
  Doc.ActiveWindow.ScrollColumn := 2;
  Doc.ActiveWindow.ScrollColumn := 1;
  Doc.ActiveWindow.ScrollRow := 2;
  Doc.ActiveWindow.ScrollRow := 1;
  Doc.Selection.ShapeRange.ScaleWidth( 0.46, msoFalse, msoScaleFromBottomRight );
  Doc.Selection.ShapeRange.ScaleHeight( 0.46, msoFalse, msoScaleFromBottomRight );
  Doc.Selection.ShapeRange.IncrementLeft( -489.75 );
  Doc.Selection.ShapeRange.IncrementTop( -358.5 );
  // и обязательно, а то у меня иногда остаются лишние екзель программы в диспетчере задач
  Doc := Null;
End;


Таким образом я за пол-дня научился из делфи строить сложные крсивые крафики через экзель и олеавтомэйшн, и сразу выводить их на печать или сохранять в файл в любом формате. Если не делать Doc.Visibility := True, а оставить экзель невидимым, то пользователь вообще не видит экзеля, а дельфовая программа как бы сама всё делает.

Вообще оле - крутая вещь, только вот макрасята не хотят её опенсурсить!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)