6

PHPを使用してExcelファイルにコンテンツを追加するには、次の関数を使用しています。

function __writeString($row, $col, $value ) {
        $L = strlen($value);
        $this->file .= pack("ssssss", 0x204, 8 + $L, $row, $col, 0x0, $L);
        $this->file .= $value;
}

たとえば、URLを値として指定することで、同じ方法でセルに画像を追加する方法を知りたいです。

4

3 に答える 3

9

これを見てください: PHPExcel。PHP から Excel を読み書きするために必要なすべてのツールを提供します。

PHPExcel をインストールしたら、次のようなものを使用して挿入できます。

$objDrawing = new PHPExcel_Worksheet_Drawing();

$objDrawing->setPath('./images/picture.png');

$objDrawing->setCoordinates('A11');
于 2013-02-07T15:31:22.537 に答える
8

「トライガン」、あなたの提案は本当に役に立ちました。https://github.com/PHPOffice/PHPExcelから最新の PHPExcel クラスをダウンロードすることができ、すぐに稼働するようになりました。ただし、Excel ファイルに画像を追加する方法を理解するのに時間がかかりました。あなたの説明はあまり役に立ちませんでした。

これを行う方法の完全な説明は次のとおりです。

まず、ライブラリをダウンロードして、Web サイトの論理的な場所に配置します。

sites/all/libraries/phpexcel/Classes

次に、Web サイト内の好きな場所に PHP ファイルを作成し、ファイルに次の内容を追加します。

1) エラー メッセージを画面に表示できるようにします。

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Europe/London');

define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br \>');

2) Excel Classes ファイルを含めます。

/** Include PHPExcel */
require_once $_SERVER["DOCUMENT_ROOT"] . "/sites/all/libraries/phpexcel/Classes/PHPExcel.php";

3) 「PHPExcel」オブジェクトを作成します。

// Create new PHPExcel object
echo date('H:i:s') , " Create new PHPExcel object" , EOL;
$objPHPExcel = new PHPExcel();

4) タイトルや説明など、いくつかの Excel メタデータを設定します。

// Set document properties
echo date('H:i:s') , " Set document properties" , EOL;
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("PHPExcel Test Document")
->setSubject("PHPExcel Test Document")
->setDescription("Test document for PHPExcel, generated using PHP classes.")
->setKeywords("office PHPExcel php")
->setCategory("Test result file");

5) 「B1」セルにデータを追加します。

// Add some data
echo date('H:i:s') , " Add some data" , EOL;
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('B1', 'Hello world!')

6) 画像をロードできる「描画」オブジェクトを作成します。画像 URL を Web サーバーの有効な画像 URL に置き換えることを忘れないでください。

// Add a drawing to the worksheet
echo date('H:i:s') , " Add a drawing to the worksheet" , EOL;
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Thumb');
$objDrawing->setDescription('Thumbnail Image');
$objDrawing->setPath($_SERVER["DOCUMENT_ROOT"] . '/sites/default/files/product-images/10098.jpg');
$objDrawing->setHeight(21);

7) 「$objPHPExcel」オブジェクトの「A1」セルに画像をコピーします。

$objDrawing->setCoordinates('A1');
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());

8) 「$objPHPExcel」オブジェクトを Excel ファイル形式で保存します。

// Save Excel 95 file
echo date('H:i:s') , " Write to Excel5 format" , EOL;
$callStartTime = microtime(true);

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save(str_replace('.php', '.xls', __FILE__));

9) 多少役立つ情報を画面に出力します。

$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;

echo date('H:i:s') , " File written to " , str_replace('.php', '.xls', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL;
// Echo memory usage
echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL;


// Echo memory peak usage
echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL;

// Echo done
echo date('H:i:s') , " Done writing files" , EOL;
echo 'Files have been created in ' , getcwd() , EOL;

これで全部です!

于 2013-10-17T18:20:25.323 に答える