Есть xls-файл. Нужно вставить в одну из клеток картинку и сохранить файл. Как?use Spreadsheet::ParseExcel::SaveParser;
use Spreadsheet::ParseExcel::FmtUnicode;
my $oFmtR = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map => "CP1251")
my $oExcel = new Spreadsheet::ParseExcel::SaveParser;
my $oBook = $oExcel->Parse('paks.xls',$oFmtR);
my $iFmt = $oBook->{Worksheet}[0]->{Cells}[0][0]->{FormatNo};
$oBook->{Worksheet}[0]->insert_image('A1','logo.bmp');
$oExcel->SaveAs($oBook, 'paks2.xls');-увы, не пашет.
>[оверквотинг удален]
> use Spreadsheet::ParseExcel::SaveParser;
> use Spreadsheet::ParseExcel::FmtUnicode;
> my $oFmtR = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map => "CP1251")
> my $oExcel = new Spreadsheet::ParseExcel::SaveParser;
> my $oBook = $oExcel->Parse('paks.xls',$oFmtR);
> my $iFmt = $oBook->{Worksheet}[0]->{Cells}[0][0]->{FormatNo};
> $oBook->{Worksheet}[0]->insert_image('A1','logo.bmp');
> $oExcel->SaveAs($oBook, 'paks2.xls');
>
>-увы, не пашет.insert_image находится в Spreadsheet::WriteExcel
>>-увы, не пашет.
>insert_image находится в Spreadsheet::WriteExcelВ общем, как решить проблему?
>>>-увы, не пашет.
>>insert_image находится в Spreadsheet::WriteExcel
>
>В общем, как решить проблему?смотри за рукой:
my $oExcel = new Spreadsheet::ParseExcel::SaveParser();
my $oBook = $oExcel->Parse('paks.xls');
my $iFmt = $oBook->{Worksheet}[0]->{Cells}[0][0]->{FormatNo};my $exBook=$oExcel->SaveAs($oBook, 'paks2.xls');
my @sheets = $exBook->worksheets();
my $sheet = $sheets[0][0];
$sheet->insert_image('A1','logo.bmp');:)
Вот код на PHP:
код
--------------------------------------------------------------------------------
$xls = new COM("Excel.Application"); // Создаем новый COM-объект
$xls->Application->Visible = 1; // Заставляем его отобразиться
$xls->Workbooks->Open("C:\\test_original.xls"); // Открываем документ, первую строку которого надо скопировать
$range=$xls->Rows(1);
$range->Copy();
//$range->Value='test';
$xls->Workbooks->Close();
*/
$xls = new COM("Excel.Application"); // Создаем новый COM-объект
$xls->Application->Visible = 1; // Заставляем его отобразиться
$xls->Workbooks->Open("C:\\test.xls"); // Открываем документ, в первую строку надо вставить содержимое буфера обмена
$range=$xls->Rows(1);
$range->Select();
$range->Paste();// Не работает. :(
//$range->Value='test';
//$xls->Workbooks->Close();Как сделать, чтобы вставка из буфера обмена работала? При копировании в буфер выводится диалоговое окно, предупреждающее, что в буфер обмена помещаеться большой объем данных,разрешить или отказать. Нужно автоматом отвечать, без вывода окна.
Догадался))$xls->Application->ActiveSheet->Paste();
Но вот проблема: картинка в ячейке A1, является гиперссылкой. Справа от неё многострочный текст, тоже являющийся ссылкой. Но! Все ячейки в первой строке пусты! Т.е. картинка и текст ни в одной из ячеек не числятся... Тогда как их в другой Эксель-файл скопировать?
>смотри за рукой:
>$sheet->insert_image('A1','logo.bmp');
>:)Обломись ! :)
Cause of error: Can't locate object method "insert_image" via packa
ge "Spreadsheet::WriteExcel::Worksheet" at test.pl line 25
код пхп, и тем более с COM объектами, не рассматривается.
Кто хочет программировать под виндовс, пожалуйста. тока за тех поддержкой пусть на microsoft.com обращается.>Обломись ! :)
В таком случае, надо писать: простите, я невнимательно следил за рукой и нифига на понял фокуса.
мне то какой смысл обламываться? У меня картинка прекрасно вставляется в файл формат exel. я его даже приятелю виндусятнику переслал, он ее смог
в нативном екселе просмотреть. Одна трабла, вместо формул, значения подставляются, правда меня это не сильно пока парит, да и оно к лучшему.
:)>Cause of error: Can't locate object method "insert_image" via packa
>ge "Spreadsheet::WriteExcel::Worksheet" at test.pl line 25бывает. :) даже не знаю что сказать.
200 баксов, и картинка лого вашей фирмы в вашем прайс листе :)
>код пхп, и тем более с COM объектами, не рассматривается.Буду надеяться, что кто-то другой рассмотрит. :)
>Кто хочет программировать под виндовс, пожалуйста. тока за тех поддержкой пусть на
>microsoft.com обращается.На msdn не нашел ответа.
>Одна трабла, вместо формул, значения подставляются, правда меня
Нет, далеко не одна. Просто при копировании эксель-файла в новый файл средствами Spreadsheet::SaveExcel форматирование немного плывёт. :(
>200 баксов, и картинка лого вашей фирмы в вашем прайс листе :)
Так бы сразу и написали, что реально помочь только за деньги можете. :)