欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

PHPExcel PHPExcel_IOFactory 写入图片 图像 到 excel AG chatgpt 有大用 有大大用 有大大用

我自己亲自做的 ok 有大用

<?php
function _read_qr_from_excelFileSaveToNew_excel($file)
{

    $filepath = $file->uri;
    require("sites/all/libraries/PHPExcel/Classes/PHPExcel.php");
    require("sites/all/libraries/PHPExcel/Classes/PHPExcel/IOFactory.php");
    // $filepath = iconv('UTF-8', 'GBK', $filepath);
    // Check prerequisites
    if (!file_exists($filepath)) {
        exit("not found $filepath \n");
    }

    // $filepath = "sites/default/files/upload_assets/test_ok2-----ok.xlsx";
    $filepath =  str_replace('public://to_do', 'sites/default/files/to_do', $filepath);
    $reader = PHPExcel_IOFactory::createReaderForFile($filepath); //设置以Excel5格式(Excel97-2003工作簿)
    $PHPExcel = $reader->load($filepath); // 载入excel文件

    $sheet = $PHPExcel->getActiveSheet();  //读取第一个工作表

    $highestRow = $sheet->getHighestRow(); // 取得总行数



    $headA1 = _removeCnEnSpace($sheet->getCell('A1')->getValue());

    if ( $headA1 != '二维码文字' ) {

        drupal_set_message('是不是格式或文件头部有错误,请看示例', 'error');
        return;
    }
    /** 循环读取每个单元格的数据 */
    $dataset = array();
    for ($row = 2; $row <= $highestRow; $row++) { //行数是以第1行开始
        $qr_code_word = _removeCnEnSpace($sheet->getCell('A' . $row)->getValue());
        if(!empty($qr_code_word)){
            $dataset['word'][] = $qr_code_word;
        }
    }

    include_once dirname(__FILE__) . '/phpqrcode.php';
    $errorCorrectionLevel = QR_ECLEVEL_L;  //容错级别
    $matrixPointSize = 6;      //生成图片大小
    foreach($dataset['word'] as $key=>$word)
    {
        $img_url =  '/misc/temp_qr_code/'.md5(uniqid(rand(), true)).'_temp_qr_code.png';
        $filepath = $_SERVER['DOCUMENT_ROOT'] .$img_url;
        QRcode::png($word,$filepath , $errorCorrectionLevel, $matrixPointSize);
        $dataset['img'][] = $filepath;
    }


    $objPHPExcel = new PHPExcel();
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '二维码文字')->setCellValue('B1', '二维码图像');
    $objPHPExcel->getActiveSheet()->setTitle('批量生成二维码图像');//好像标题不能太长,太长会报500错
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
    $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);

    $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(30); // 设置 B 列宽度为 30
    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(24); // 设置 B 列宽度为 30

    //设置行高
    $row = 2;
    foreach($dataset['word'] as $key=>$word)
    {
        $objPHPExcel->getActiveSheet()->getRowDimension($row)->setRowHeight(130); // 设置第一行高度为 40
        $row++; // 移动到下一行
    }

    //插入文字
    $row = 2;
    foreach($dataset['word'] as $key=>$word)
    {
        $objPHPExcel->getActiveSheet()->setCellValue('A' . $row, $word); // 将文本插入到 A 列
        $row++; // 移动到下一行
    }

    //插入图像
    $row = 2;
    foreach ($dataset['img'] as $filepath) {
        if (file_exists($filepath)) {
            // 创建 Drawing 对象
            $objDrawing = new PHPExcel_Worksheet_Drawing();
            $objDrawing->setName('Sample Image');
            $objDrawing->setDescription('This is a sample image');
            $objDrawing->setPath($filepath); // 设置图片路径
            $objDrawing->setCoordinates('B' . $row); // 设置插入单元格的坐标
            $objDrawing->setHeight(174); // 可以设置图像的高度
            $objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); // 将图片写入工作表
            $row++; // 下一行
        } else {
            echo "文件不存在: $filepath\n"; // 处理不存在的文件
        }
    }


    $original_filename = $file->origname;
    $path_info = pathinfo($original_filename);
    $filename = $path_info['filename']; // 不包括扩展名的文件名
//    $extension = $path_info['extension']; // 文件扩展名
    $new_filename = $filename . '_new.' . 'xlsx';
    // 设置输出文件类型,强制下载 Excel 文件
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//这里 xlsx
//    header('Content-Type: application/vnd.ms-excel');//这是 xls,好像是有点问题,,又好像没有问题
    header('Content-Disposition: attachment;filename="'.$new_filename.'"');
    header('Cache-Control: max-age=0');

// 写入 Excel 文件并输出到浏览器
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); // 使用 Excel2007 格式
    $objWriter->save('php://output'); // 将文件发送到输出流
    exit; // 结束脚本执行
}
?>




PHPExcel_IOFactory 写入一个图片 到 excel


虽然 PHPExcel 已被弃用,但如果您确实需要使用 PHPExcel 库和 PHPExcel_IOFactory 来将图片写入 Excel 文件,可以参考以下示例代码。这段代码展示了如何使用 PHPExcel 来创建一个新的 Excel 文件,并在其中插入图片。

示例代码

php
<?php
require 'path/to/PHPExcel.php'; // 将其替换为您安装 PHPExcel 的实际路径
require 'path/to/PHPExcel/IOFactory.php'; // 引入 PHPExcel_IOFactory

// 创建PHPExcel对象
$objPHPExcel = new PHPExcel();

// 设置文档属性
$objPHPExcel->getProperties()->setCreator("Your Name")
                             ->setLastModifiedBy("Your Name")
                             ->setTitle("PHPExcel Image Example")
                             ->setSubject("PHPExcel Image Example")
                             ->setDescription("Example of inserting images into Excel.")
                             ->setKeywords("PHPExcel image")
                             ->setCategory("Image");

// 添加一个新的工作表
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Hello World!');

// 图片路径
$imagePath = 'path/to/your/image.jpg'; // 替换为您的图片路径

// 依赖 PHPExcel的Drawing类来插入图片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Sample Image');
$objDrawing->setDescription('This is a sample image');
$objDrawing->setPath($imagePath); // 图片路径
$objDrawing->setCoordinates('B2'); // 图片放入的单元格坐标
$objDrawing->setHeight(100); // 设置图片高度(可选)
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); // 将图片写入到工作表

// 设置输出文件类型
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="output.xlsx"');
header('Cache-Control: max-age=0');

// 写入Excel文件并输出到浏览器
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); // 使用Excel2007格式
$objWriter->save('php://output'); // 将文件发送到输出流

exit; // 结束脚本执行
?>

代码说明

  1. 引入 PHPExcel 和 IOFactory:使用 require 引入 PHPExcel 库的核心文件和 IOFactory。

  2. 创建 PHPExcel 对象:初始化一个新的 PHPExcel 对象。

  3. 设置文档属性:用 getProperties() 方法设置一些文档的元数据(如作者、标题)。

  4. 添加内容:在活动工作表的单元格中添加文本内容。

  5. 处理图片

  • 使用 PHPExcel_Worksheet_Drawing 类创建一个新的图像对象。

  • 设置图像的路径、插入位置和高度。

  • 使用 setWorksheet() 方法将图像附加到活动工作表。

  • 输出文件

    • 设置响应头以告知浏览器下载 Excel 文件。

    • 使用 PHPExcel_IOFactory 创建一个 Excel 文件的写入器,将文档保存在输出流中。

  • 结束脚本:使用 exit 来结束脚本执行。

  • 注意事项

    • 确保 PHPExcel 库的路径正确。

    • 确保 PHP 环境中已启用 GD 扩展,因为图像处理可能需要此扩展。

    • 图片路径必须正确且文件格式支持(例如 JPG、PNG 等)。

    请根据您的具体需求调整代码路径和其他设置。如果您还有其他问题,请随时询问!




    PHPExcel_IOFactory 写入多个图片 到 excel

    下面是一个详细的示例,演示如何使用 PHPExcel 和 PHPExcel_IOFactory 插入多个图像到 Excel 文件中。

    示例代码

    php
    <?php
    require 'path/to/PHPExcel.php'; // 引入 PHPExcel 库
    require 'path/to/PHPExcel/IOFactory.php'; // 引入 IOFactory
    
    // 创建 PHPExcel 对象
    $objPHPExcel = new PHPExcel();
    
    // 设置文档属性
    $objPHPExcel->getProperties()->setCreator("Your Name")
                                 ->setLastModifiedBy("Your Name")
                                 ->setTitle("PHPExcel Multiple Images Example")
                                 ->setSubject("PHPExcel Multiple Images Example")
                                 ->setDescription("Example of inserting multiple images into Excel.")
                                 ->setKeywords("PHPExcel images")
                                 ->setCategory("Image");
    
    // 添加一个新的工作表
    $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1', 'Hello World!');
    
    // 定义图片路径数组
    $images = [
        'path/to/your/image1.jpg', // 替换为你的第一个图片路径
        'path/to/your/image2.png', // 替换为你的第二个图片路径
        // 可以继续添加更多图片路径...
    ];
    
    // 图片插入坐标
    $row = 2; // 从第二行开始插入
    foreach ($images as $imagePath) {
        if (file_exists($imagePath)) {
            // 创建 Drawing 对象
            $objDrawing = new PHPExcel_Worksheet_Drawing();
            $objDrawing->setName('Sample Image');
            $objDrawing->setDescription('This is a sample image');
            $objDrawing->setPath($imagePath); // 设置图片路径
            $objDrawing->setCoordinates('B' . $row); // 设置插入单元格的坐标
            $objDrawing->setHeight(100); // 可以设置图像的高度
            $objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); // 将图片写入工作表
            $row++; // 下一行
        } else {
            echo "文件不存在: $imagePath\n"; // 处理不存在的文件
        }
    }
    
    // 设置输出文件类型
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="output.xlsx"');
    header('Cache-Control: max-age=0');
    
    // 写入 Excel 文件并输出到浏览器
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); // 使用 Excel2007 格式
    $objWriter->save('php://output'); // 将文件发送到输出流
    
    exit; // 结束脚本执行
    ?>

    代码说明

    1. 引入库:使用 require 语句引入 PHPExcel 和 IOFactory 类。

    2. 创建对象:初始化一个新的 PHPExcel 对象,并设置一些文档属性。

    3. 添加内容:在 Excel 的第一行中插入文本。

    4. 定义图片路径数组:使用数组存储多个图片的路径。

    5. 插入图片

    • 遍历图片路径数组。

    • 对于每个存在的图片路径,创建 PHPExcel_Worksheet_Drawing 对象。

    • 设置图像的路径和插入位置,然后将其附加到工作表上的适当单元格。

    • 更新行数,以便每张图片都在新的一行中插入。

  • 输出文件:设置响应头以告知浏览器下载文件,并将内容写入输出流。

  • 结束脚本:使用 exit 来结束脚本执行。

  • 注意事项

    • 确保文件路径正确,并且 PHP 的执行环境对这些路径有读取权限。

    • 如果文件不存在,脚本将输出提示信息。

    • PHPExcel 图像处理可能需要 GD 扩展,确保该扩展已启用。

    通过以上代码,您可以将多个图像插入到生成的 Excel 文件中。确保根据您的服务器环境和需求调整路径和设置。如果您有进一步的问题,请随时提问!




    PHPExcel_IOFactory 写入多个文字 到 excel

    为了使用 PHPExcel 和 PHPExcel_IOFactory 向 Excel 文件中写入多个文本(字符串),可以通过创建一个简单的循环结构来实现插入。以下是示例代码,展示如何在 PHP 中使用 PHPExcel 插入多个字符串到一个 Excel 文件中。

    示例代码

    php
    <?php
    require 'path/to/PHPExcel.php'; // 替换为你实际的 PHPExcel 路径
    require 'path/to/PHPExcel/IOFactory.php'; // 替换为你实际的 IOFactory 路径
    
    // 创建 PHPExcel 对象
    $objPHPExcel = new PHPExcel();
    
    // 设置文档属性
    $objPHPExcel->getProperties()->setCreator("Your Name")
                                 ->setLastModifiedBy("Your Name")
                                 ->setTitle("PHPExcel Multiple Text Example")
                                 ->setSubject("PHPExcel Multiple Text Example")
                                 ->setDescription("Example of inserting multiple texts into Excel.")
                                 ->setKeywords("PHPExcel text")
                                 ->setCategory("Text");
    
    // 添加一个新的工作表
    $objPHPExcel->setActiveSheetIndex(0);
    
    // 定义要插入的文本数组
    $texts = [
        '第一列文本1',
        '第一列文本2',
        '第一列文本3',
        '第一列文本4',
        '第一列文本5',
        // 可以继续添加更多文本...
    ];
    
    // 在 Excel 中插入文本
    $row = 1; // 从第一行开始插入(Excel 的行号从 1 开始)
    foreach ($texts as $text) {
        $objPHPExcel->getActiveSheet()->setCellValue('A' . $row, $text); // 将文本插入到 A 列
        $row++; // 移动到下一行
    }
    
    // 设置输出文件类型,强制下载 Excel 文件
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="output.xlsx"');
    header('Cache-Control: max-age=0');
    
    // 写入 Excel 文件并输出到浏览器
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); // 使用 Excel2007 格式
    $objWriter->save('php://output'); // 将文件发送到输出流
    
    exit; // 结束脚本执行
    ?>

    代码说明

    1. 引入库:使用 require 语句加载 PHPExcel 和 IOFactory。

    2. 创建对象:初始化一个新的 PHPExcel 对象,并设置一些文档属性。

    3. 定义文本数组:用一个数组存储多个要插入的字符串。

    4. 插入文本

    • 使用 foreach 循环遍历文本数组。

    • 在循环中,使用 setCellValue() 方法设置每个文本的单元格,列是 A,行是变量 $row,自动递增。

  • 输出 Excel 文件

    • 设置适当的 HTTP 头,以强制浏览器下载生成的 Excel 文件。

    • 使用 PHPExcel_IOFactory 来创建 Excel 文件的写入对象,并将内容写入输出流。

  • 结束脚本:使用 exit 来结束脚本,以防止其他额外输出影响文件的生成。

  • 注意事项

    • 确保 PHPExcel 的路径是正确的。

    • 可以根据需要自定义文本数组以添加您希望写入的内容。

    • 根据文档需求,可以在插入文本之前对单元格样式进行调整(如字体、颜色等)。

    • 需要安装和启用 GD 扩展和 mbstring 扩展,以确保支持所有图像和多字节操作。

    通过这个方式,你可以轻松地将多个字符串写入 Excel 文件。如果有其他问题或具体需求,请随时问我!



    PHPExcel_IOFactory 写入多个文字 到 excel  A1 就粗体

    下面是一个示例代码,演示如何使用 PHPExcel 和 PHPExcel_IOFactory 插入多个文本,并将 Excel 中的单元格 A1 设置为粗体。

    示例代码

    php
    <?php
    require 'path/to/PHPExcel.php'; // 替换为你实际的 PHPExcel 路径
    require 'path/to/PHPExcel/IOFactory.php'; // 替换为你实际的 IOFactory 路径
    
    // 创建 PHPExcel 对象
    $objPHPExcel = new PHPExcel();
    
    // 设置文档属性
    $objPHPExcel->getProperties()->setCreator("Your Name")
                                 ->setLastModifiedBy("Your Name")
                                 ->setTitle("PHPExcel Multiple Text Example")
                                 ->setSubject("PHPExcel Multiple Text Example")
                                 ->setDescription("Example of inserting multiple texts into Excel.")
                                 ->setKeywords("PHPExcel text")
                                 ->setCategory("Text");
    
    // 添加一个新的工作表
    $objPHPExcel->setActiveSheetIndex(0);
    
    // 在 A1 单元格中写入粗体文本
    $objPHPExcel->getActiveSheet()->setCellValue('A1', '这是粗体文本');
    
    // 设置 A1 单元格为粗体
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
    
    // 定义要插入的其他文本数组
    $texts = [
        '第一列文本1',
        '第一列文本2',
        '第一列文本3',
        '第一列文本4',
        '第一列文本5',
    ];
    
    // 在 Excel 中插入文本
    $row = 2; // 从第二行开始插入(A2)
    foreach ($texts as $text) {
        $objPHPExcel->getActiveSheet()->setCellValue('A' . $row, $text); // 将文本插入到 A 列
        $row++; // 移动到下一行
    }
    
    // 设置输出文件类型,强制下载 Excel 文件
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="output.xlsx"');
    header('Cache-Control: max-age=0');
    
    // 写入 Excel 文件并输出到浏览器
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); // 使用 Excel2007 格式
    $objWriter->save('php://output'); // 将文件发送到输出流
    
    exit; // 结束脚本执行
    ?>

    代码说明

    1. 引入库:使用 require 语句来引入 PHPExcel 和 IOFactory。

    2. 创建对象:初始化一个新的 PHPExcel 对象并设置文档属性。

    3. 设置粗体文本

    • 使用 setCellValue() 方法在 A1 单元格中插入文本。

    • 使用 getStyle('A1')->getFont()->setBold(true) 将 A1 设置为粗体。

  • 插入其他文本

    • 定义一个文本数组,包含要插入的其他字符串。

    • 使用 foreach 循环遍历文本数组,将每个字符串插入到 A2 开始的单元格中。

  • 输出文件:设置 HTTP 头以强制浏览器下载 Excel 文件,并使用 PHPExcel_IOFactory 来写入内容。

  • 结束脚本:执行 exit 来结束脚本执行,避免额外输出干扰。

  • 注意事项

    • 请确保 PHPExcel 的路径正确。

    • 根据需要调整单元格格式,例如字体大小、颜色等,可以使用类似 getStyle() 的方法进行设置。

    • 必须在服务器上安装 GD 扩展和 mbstring 扩展,以确保支持所有图像和多字节操作。

    通过这段代码,你将能够在 Excel 中插入多个文本,并将 A1 设置为粗体。如果有更多问题或其他需求,请随时提问!



    PHPExcel_IOFactory 设置单元格的行高和列高

    在使用 PHPExcel 库时,您可以通过设置单元格的行高和列宽来调整 Excel 工作表的布局。以下是如何使用 PHPExcel_IOFactory 设置单元格的行高和列宽的示例代码。

    示例代码

    php
    <?php
    require 'path/to/PHPExcel.php'; // 替换为你的 PHPExcel 路径
    require 'path/to/PHPExcel/IOFactory.php'; // 替换为你的 IOFactory 路径
    
    // 创建 PHPExcel 对象
    $objPHPExcel = new PHPExcel();
    
    // 设置文档属性
    $objPHPExcel->getProperties()->setCreator("Your Name")
                                 ->setLastModifiedBy("Your Name")
                                 ->setTitle("PHPExcel Row and Column Example")
                                 ->setSubject("PHPExcel Row and Column Example")
                                 ->setDescription("Example of setting row height and column width in Excel.")
                                 ->setKeywords("PHPExcel row height column width")
                                 ->setCategory("Example");
    
    // 添加一个新的工作表
    $objPHPExcel->setActiveSheetIndex(0);
    
    // 设置单元格内容
    $objPHPExcel->getActiveSheet()->setCellValue('A1', '这是第一列');
    $objPHPExcel->getActiveSheet()->setCellValue('B1', '这是第二列');
    
    // 设置列宽
    $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20); // 设置 A 列宽度为 20
    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30); // 设置 B 列宽度为 30
    
    // 设置行高
    $objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(40); // 设置第一行高度为 40
    
    // 设置输出文件类型,强制下载 Excel 文件
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="output.xlsx"');
    header('Cache-Control: max-age=0');
    
    // 写入 Excel 文件并输出到浏览器
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); // 使用 Excel2007 格式
    $objWriter->save('php://output'); // 将文件发送到输出流
    
    exit; // 结束脚本执行
    ?>

    代码说明

    1. 引入 PHPExcel:使用 require 引入 PHPExcel 和 IOFactory。

    2. 创建对象:初始化一个新的 PHPExcel 对象,并设置文档属性。

    3. 设置单元格内容:在 A1 和 B1 单元格中插入文本内容。

    4. 设置列宽

    • 使用 getColumnDimension('A')->setWidth(20) 设置 A 列的宽度为 20。

    • 使用 getColumnDimension('B')->setWidth(30) 设置 B 列的宽度为 30。

  • 设置行高

    • 使用 getRowDimension(1)->setRowHeight(40) 设置第 1 行的高度为 40。

  • 输出文件:通过设置适当的 HTTP 头强制浏览器下载生成的 Excel 文件,并使用 PHPExcel_IOFactory 将内容写入输出流。

  • 结束脚本:通过 exit 结束脚本执行,防止其他输出影响生成的文件。

  • 注意事项

    • 请确保 PHPExcel 的路径正确。

    • 根据需要自定义行高和列宽。

    • 行高和列宽的单位通常是字符,对于列宽来说,1 个字符约等于 1 字符宽度(通常取决于字体)。

    • 如果需要处理大量数据或复杂的格式,考虑使用 PHPExcel 的其他功能和样式设置。

    通过上述代码,您可以轻松地设置 Excel 中单元格的行高和列宽。如果您有其他问题或需求,请随时询问!





    在使用 PHPExcel(或其后续版本 PhpSpreadsheet)时,你可以将图像插入到 Excel 文件中。以下是如何使用 PHPExcel_IOFactory(对于 PHPExcel)或 PhpOffice\PhpSpreadsheet\IOFactory(对于 PhpSpreadsheet)将图像写入 Excel 文件的示例。

    使用 PHPExcel(已过时,但提供示例)

    1. 安装 PHPExcel(如果你还没有安装):
      你可以通过 Composer 安装 PHPExcel,但请注意,PHPExcel 已经不再维护,建议使用 PhpSpreadsheet。

      bash复制代码

      composer require phpoffice/phpexcel
    2. 创建并写入图像到 Excel

      php复制代码

      require 'vendor/autoload.php';



      use PHPExcel_Worksheet_Drawing as Drawing;

      use PHPExcel_IOFactory as IOFactory;



      // 创建一个新的 PHPExcel 对象

      $objPHPExcel = new PHPExcel();



      // 激活第一个工作表

      $objPHPExcel->setActiveSheetIndex(0);



      // 创建一个绘图对象

      $objDrawing = new Drawing();

      $objDrawing->setName('Example image');

      $objDrawing->setDescription('An example image');

      $objDrawing->setPath('path/to/your/image.jpg'); // 图像文件的路径

      $objDrawing->setHeight(100); // 图像高度(单位:像素)

      $objDrawing->setCoordinates('B2'); // 图像插入的单元格位置

      $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());



      // 保存 Excel 文件

      $objWriter = IOFactory::createWriter($objPHPExcel, 'Excel2007');

      $objWriter->save('example.xlsx');



      echo "Excel 文件已成功创建,包含图像。";

    使用 PhpSpreadsheet(推荐)

    1. 安装 PhpSpreadsheet

      bash复制代码

      composer require phpoffice/phpspreadsheet
    2. 创建并写入图像到 Excel

      php复制代码

      require 'vendor/autoload.php';



      use PhpOffice\PhpSpreadsheet\Spreadsheet;

      use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

      use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;

      use PhpOffice\PhpSpreadsheet\IOFactory;



      // 创建一个新的 Spreadsheet 对象

      $spreadsheet = new Spreadsheet();

      $sheet = $spreadsheet->getActiveSheet();



      // 创建一个绘图对象

      $drawing = new Drawing();

      $drawing->setName('Example image');

      $drawing->setDescription('An example image');

      $drawing->setPath('path/to/your/image.jpg'); // 图像文件的路径

      $drawing->setHeight(100); // 图像高度(单位:像素)

      $drawing->setCoordinates('B2'); // 图像插入的单元格位置

      $drawing->setWorksheet($sheet);



      // 保存 Excel 文件

      $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');

      $writer->save('example.xlsx');



      echo "Excel 文件已成功创建,包含图像。";

    注意事项

    • 确保图像文件的路径是正确的。

    • 你可以根据需要调整图像的高度和宽度。

    • PhpSpreadsheet 是 PHPExcel 的后续版本,并且提供了更多的功能和更好的性能,因此建议使用 PhpSpreadsheet。

    通过上述步骤,你可以轻松地将图像插入到 Excel 文件中。





    使用 PHPExcel 库(或其后续版本 PhpSpreadsheet)可以方便地将数据写入 Excel 文件。以下是如何使用 PHPExcel_IOFactory(在 PHPExcel 中)或 PhpSpreadsheet\IOFactory(在 PhpSpreadsheet 中)将文字写入 Excel 文件的示例。

    使用 PHPExcel(旧版本)

    首先,确保你已经安装了 PHPExcel。你可以通过 Composer 安装,或者手动下载并包含相关文件。

    以下是一个使用 PHPExcel 将文字写入 Excel 文件的示例:

    php复制代码

    <?php

    require 'path/to/PHPExcel.php'; // 包含 PHPExcel 类文件



    // 创建一个新的 PHPExcel 对象

    $objPHPExcel = new PHPExcel();



    // 设置活动的工作表

    $objPHPExcel->setActiveSheetIndex(0);



    // 在单元格 A1 中写入文字

    $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello, World!');



    // 创建一个写入文件的对象 (使用 Excel2007 格式)

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');



    // 将文件保存到指定路径

    $objWriter->save('hello_world.xlsx');



    echo "Excel 文件已创建成功。";

    ?>

    使用 PhpSpreadsheet(新版本)

    PhpSpreadsheet 是 PHPExcel 的后续版本,并且提供了更多的功能和改进。以下是使用 PhpSpreadsheet 将文字写入 Excel 文件的示例:

    首先,通过 Composer 安装 PhpSpreadsheet:

    bash复制代码

    composer require phpoffice/phpspreadsheet

    然后,使用以下代码将文字写入 Excel 文件:

    php复制代码

    <?php

    require 'vendor/autoload.php'; // 包含 Composer 自动加载文件



    use PhpOffice\PhpSpreadsheet\Spreadsheet;

    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;



    // 创建一个新的 Spreadsheet 对象

    $spreadsheet = new Spreadsheet();



    // 设置活动的工作表

    $sheet = $spreadsheet->getActiveSheet();



    // 在单元格 A1 中写入文字

    $sheet->setCellValue('A1', 'Hello, World!');



    // 创建一个写入文件的对象 (使用 Xlsx 格式)

    $writer = new Xlsx($spreadsheet);



    // 将文件保存到指定路径

    $writer->save('hello_world.xlsx');



    echo "Excel 文件已创建成功。";

    ?>

    注意事项

    1. 文件路径:确保你有权限在指定的路径下创建文件。

    2. 依赖管理:如果你使用 Composer 管理依赖,确保 vendor/autoload.php 路径正确。

    3. 错误处理:在实际应用中,添加适当的错误处理逻辑,例如捕获异常,以确保程序的健壮性。

    通过以上示例,你可以轻松地将文字写入 Excel 文件。根据你的需求,你还可以进一步定制 Excel 文件,例如设置单元格样式、合并单元格、添加公式等。



    drupal 导出 excel xls 文件


    0                

    我使用以下2个函数将数据从名为eco_customers的表导出到excel文件                

    但我有阿拉伯字符的问题,他们显示损坏,如何修改编码以纠正excel文件中的阿拉伯字符问题                

    function cleanData(&$str) { 
        $str = preg_replace("/\t/", "\\t", $str); 
        $str = preg_replace("/\r?\n/", "\\n", $str); 
        if(strstr($str, '"')) 
        $str = '"' . str_replace('"', '""', $str) . '"';
         }
    
    function customer_export(){
    
     $filename = "cutomers_data_" . date('Ymd') . ".xls"; 
     header("Content-Disposition: attachment; filename=\"$filename\""); 
     header("Content-Type: application/vnd.ms-excel, charset=UTF-8; encoding=UTF-8"); 
    
     $flag = false;
    
     $result = db_query("SELECT name, arabic_name, phones, fax, address, country, city, email, website, registration_no FROM eco_customers ") or die('Query failed!'); 
    
      while(false !== ($row = db_fetch_array($result))) { 
    
             if(!$flag) { 
              // display field/column names as first row 
              echo implode("\t", array_keys($row)) . "\r\n"; 
              $flag = true; 
              }
             array_walk($row, 'cleanData'); 
             echo implode("\t", array_values($row)) . "\r\n";
      }
    
     }
               
                       
    改善这个问题                        

                   
    添加评论            
       

    1答案        正确答案                

    活跃的最老                
       
    1                    

    我使用了phpExcel库,现在一切正常                    

     function customer_export(){
    
    
    require_once('Classes/PHPExcel.php');
    
    
    
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->getActiveSheet()->setTitle('List of Customers');//好像标题不能太长,太长会报500错
    
        $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1', 'Name')
                ->setCellValue('B1', 'Arabic Name')
                ->setCellValue('C1', 'Phone')
                ->setCellValue('D1', 'Fax')
                ->setCellValue('E1', 'Address')
                ->setCellValue('F1', 'Country')
                ->setCellValue('G1', 'City')
                ->setCellValue('H1', 'Email')
                ->setCellValue('I1', 'Website')
                ->setCellValue('J1', 'Registration Number');
    
     $result = db_query("SELECT name, arabic_name, phones, fax, address, country, city, email, website, registration_no FROM eco_customers ") or die('Query failed!'); 
    
      // Loop through the result set
        $rowNumber = 2;
        while ($row = db_fetch_array($result)) {
           $col = 'A';
           foreach($row as $cell) {
              $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell);     
              $col++;    // 当为 A 时 $col++就是B? 当为B时,$col++就是C?
           }
           $rowNumber++;
        }
    
    
        // Freeze pane so that the heading line won't scroll
        $objPHPExcel->getActiveSheet()->freezePane('A2');
    
        // Save as an Excel BIFF (xls) file
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    
       header('Content-Type: application/vnd.ms-excel');
       header('Content-Disposition: attachment;filename="customers_data_' . date('Ymd') . '.xls"');
       header('Cache-Control: max-age=0');
    
       $objWriter->save('php://output');
       exit();
    
     }
                   
    改善这个答案                                                           
    添加评论                
       


           

    来自于  https://stackoverflow.com/questions/7834755/drupal-export-data-from-table-to-excel        


    普通分类: