PHPExcel CSV 到 XLSX

2024-01-09

我在将文件从 CSV 转换为 XLSX 格式时遇到问题:

索引.php

<?php
if (!isset($_FILES["file"]))
{
?>
<html>
    <body>
        <h1>Convert CSV to XLSX</h1>
        <form action="index.php" method="post" enctype="multipart/form-data">
            <input type="file" name="file"/>
            <input type="submit"/>
        </form>
    </body>
</html>
<?php
    exit;
}

//obtain PHPExcel from http://phpexcel.codeplex.com
require_once('Classes\PHPExcel.php');
require_once('CSVToExcelConverter.php');

if ($_FILES["file"]["error"] > 0)
{
    echo "Error: " . $_FILES["file"]["error"];
    exit;
}

try
{
    header('Content-type: application/ms-excel');
    header('Content-Disposition: attachment; filename='.'example.xlsx');

    CSVToExcelConverter::convert($_FILES['file']['tmp_name'], 'php://output');
} catch(Exception $e) {
    echo $e->getMessage();
}

CSVToExcelConverter.php

class CSVToExcelConverter
{
    /**
     * Read given csv file and write all rows to given xls file
     * 
     * @param string $csv_file Resource path of the csv file
     * @param string $xls_file Resource path of the excel file
     * @param string $csv_enc Encoding of the csv file, use utf8 if null
     * @throws Exception
     */
    public static function convert($csv_file, $xls_file, $csv_enc=null) {
        //set cache
        $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
        PHPExcel_Settings::setCacheStorageMethod($cacheMethod);

        //open csv file
        $objReader = new PHPExcel_Reader_CSV();
        if ($csv_enc != null)
            $objReader->setInputEncoding($csv_enc);
        $objPHPExcel = $objReader->load($csv_file);
        $in_sheet = $objPHPExcel->getActiveSheet();

        //open excel file
        $objPHPExcel = new PHPExcel();
        $out_sheet = $objPHPExcel->getActiveSheet();

        //row index start from 1
        $row_index = 0;
        foreach ($in_sheet->getRowIterator() as $row) {
            $row_index++;
            $cellIterator = $row->getCellIterator();
            $cellIterator->setIterateOnlyExistingCells(false);

            //column index start from 0
            $column_index = -1;
            foreach ($cellIterator as $cell) {
                $column_index++;
                $out_sheet->setCellValueByColumnAndRow($column_index, $row_index, $cell->getValue());
            }
        }

        //write excel file
        $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
        $objWriter->save($xls_file);
    }
}

CSV 文件格式:使用 Excel 打开的 CSV 文件 https://i.stack.imgur.com/EsU8Y.png

转换后得到的 xlsx 文件 https://i.stack.imgur.com/iMGtm.png

基本上我想获得类似于原始 csv 文件的输出,但采用 xlsx 格式,该怎么做?


在 PHPExcel 中读取 CSV 文件的“默认”分隔符是逗号 (,)。您的 CSV 文件使用的不是逗号 - 可能是制表符("\t"),这也常用于此类文件)。

如果这些值不是逗号(并且我们无法从 MS Excel 中查看的文件图像中看出),那么您必须在加载之前明确告诉 PHPExcel 该分隔符是什么。

e.g.

$objReader->setDelimiter("\t");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHPExcel CSV 到 XLSX 的相关文章

  • 将 rel="nofollow" 添加到 WordPress 帖子中的所有链接

    我想将 rel nofollow 添加到我的 WordPress 帖子中的所有链接 并且我希望能够拥有一个不会获得 nofollow 的链接列表 我已经尝试了很多 但我无法正确完成 因为我真的不能很好地理解正则表达式 所以我有字符串 tex
  • 在多维数组 PHP 的所有键中搜索

    我想在多维数组中的所有键中搜索特定字符串 我只需要弄清楚它是否存在 仅此而已 我想知道访问者的 IP 是否存在于任何数组中 有没有我可以用来执行此操作的 php 函数或方法 我尝试过的每个函数或方法总是返回 false 数组中 数组搜索 数
  • 如何在 json 中输出 javascript 日期

    我正在尝试时间线图表 http code google com apis visualization documentation gallery annotatedtimeline html Data Format http code go
  • 从 freshdesk api 获取所有用户时获取curl_error(): 2 不是有效的 cURL 句柄资源

    我正在创建自己的系统来管理通过其 API 来自 freshdesk com 的所有票证 我正在发出curl 请求以从freshdesk com 获取数据 通过获取与股票相关的数据 它的工作正常 但是当我通过curl请求请求所有用户时 它会给
  • CakePHP Auth 组件使用 $this->Auth->login() 时未登录;

    我是 cakePHP 的新手 我已经阅读了他们的文档 并且正在遵循他们的简单身份验证示例 我还广泛搜索 包括本网站上的答案 来寻找我的问题的答案 我正在使用 cakePHP 2 0 我的 UsersController 的登录功能如下所示
  • PHP 删除字符最后一个实例之前的所有内容

    有没有办法删除某个字符之前的所有内容 包括最后一个实例 我有多个字符串 其中包含 gt e g the gt cat gt sat gt on gt the gt mat welcome gt home 我需要对字符串进行格式化 以便它们变
  • 将 PHP 中的 openssl AES 转换为 Python AES

    我有一个 php 文件 如下所示 encryption encoded key c7e1wJFz PBwQix80D1MbIwwOmOceZOzFGoidzDkF5g function my encrypt data key encrypt
  • zend 表单验证

    我想知道 Zend Form 如何验证输入 我的意思是它如何知道要验证哪些输入字段 我查看了 php 全局变量 POST GET 但没有看到任何设置为标识符 例如 的内容 以便了解如何验证 有人能给我推荐一些关于这些东西的指南吗 好吧 找出
  • 转义用户数据,无需魔法引号

    我正在研究如何在来自外部世界的数据被用于应用程序控制 存储 逻辑等之前正确地对其进行转义 显然 随着 magic quote 指令在 php 5 3 0 中很快被弃用 并在 php6 中被删除 对于任何想要升级并进入新语言功能 同时维护遗留
  • 在php中获取大于2GB的文件大小的最佳方法?

    我想检查本地驱动器上的文件大小windows OS 但是PHP原生函数filesize 仅当文件大小小于时才有效2GB 大于的文件2GB将返回错误的数字 那么 是否有其他方法来获取大于的文件大小2GB 非常感谢 您始终可以使用系统的文件大小
  • DataTables 第 2 页的分页未调用放大弹出窗口

    所以我有这个启用分页的数据表 我编码了一种方式 以便用户可以编辑表的行 当用户调用它在放大弹出窗口中打开的编辑页面时 它在第 1 页 从第 2 页起都运行良好 DataTable 及其前面停止调用 Magnific Popup 我只是不明白
  • 查明具有特定 ID 的会话是否已过期

    我正在创建一个上传功能 将用户上传的文件存储在服务器上 并以用户的会话 ID 作为名称 现在 我只想将此文件保留在服务器上 直到该会话处于活动状态 所以 我的问题是 如何根据会话 ID 确定会话是活动的还是过期的 以便在后一种情况下我可以安
  • PHP Github Pull 脚本错误“权限被拒绝(公钥)”

    我已经设置了一个 PHP 脚本来执行 GitHub 拉取 这包含在我的 Github 文件夹中 home mysite public html github github pull php 我的服务器已经有 SSH 公钥 就像我执行git
  • CryptoJS 使用密码加密 AES,但 PHP 解密需要密钥

    我在用CryptoJS https code google com p crypto js AES加密字符串 function doHash msg msg String msg var passphrase aggourakia var
  • 使用第三方库记录来自 PHP 应用程序的所有 cURL 请求

    好吧 我的 PHP Yii2 应用程序遇到了困难 我需要记录来自应用程序的每个传入和传出请求 传入的请求可以轻松地记录在 PHP 本身中 在引导阶段添加一些处理程序 这很容易 但真正的问题是我正在使用许多第三方库 即 Amazon MWS
  • 使用 Imagick 动态图像创建/Apache 标头

    在将现有的稳定网站转移到新服务器时 我遇到了一些使用 Imagick 动态创建图像的代码的间歇性问题 该代码解析 GET 查询 例如 example com image php ipid 750123 r 0 w 750 h 1000 然后
  • 2 使用我的代码在数组中查询

    我使用滑块来显示我的 WordPress 精选文章 它选择一个自定义类别并返回一定数量的帖子 如何将显示的第一篇帖子设为自定义帖子 我可以直接在滑块代码中添加特定帖子的 ID吗使该帖子首先出现 然后是原始查询返回的其他内容 例如 在页面上
  • 使用 Xpath 进行部分匹配

    我正在尝试创建一个搜索功能 允许使用 Xpath 按歌曲标题或流派进行部分匹配 这是我的 XML 文件
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时

随机推荐

  • C# ui Automation [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试在 C 中自动化 gui 这与浏览器自动化相同吗 我如何启动 ui 自动化 如果您使用 WPF Microsoft 有一个非
  • 如何使用 heroku CLI 连接到选定的应用程序

    我正在尝试在 Heroku 上部署我的 Java Web 应用程序 当我制作教程时 我使用创建了一个应用程序赫罗库创建命令 我们可以说它是 name app1 然后我在教程结束后删除了它并创建了一个新的来部署它 让它成为 new app 但
  • 最新的 CSS 父选择器 [重复]

    这个问题在这里已经有答案了 我能找到的关于此的最新信息是W3C 选择器 4 级编辑草稿 http dev w3 org csswg selectors 4 但是 据我所知 它不再提及父选择器 我知道有一个谷歌对此进行的调查 https do
  • 我的 TableView 中分隔线之前的空白

    我有一个关于 UITableView 的问题 我有一个 UITableViewController 并且创建了一个自定义单元格 当我可视化 tableView 时 我在分隔线之前看到了一点空白 正如您在这个屏幕截图中看到的那样 为什么 这是
  • F# 与 OCaml:堆栈溢出

    我最近发现了一个关于适合 Python 程序员的 F http combiol org fs FSUG FS4PPv2 pptx 看完之后 我决定自己实现一个 蚂蚁谜题 的解决方案 有一只蚂蚁可以在平面网格上走动 蚂蚁一次可以向左 向右 向
  • php 分叉问题

    我有以下测试 php 来执行 fork spawn 过程 其中测试还尝试在完成后杀死子进程 僵尸 我希望有一个更有效的流程 其中任何子进程都会尽快从进程表中删除 当前尝试填满了进程表 并导致内存分配问题 导致系统关闭 该应用程序在 Fedo
  • 读取和写入同一个netcat tcp连接

    假设我写入 netcat 连接 tail f file nc localhost 7050 do whatever nc localhost 7050 这里发生的是我们有两个套接字连接 用于执行一些请求 响应 但由于一些原因 这并不理想 我
  • 如何控制 Flexbox 中每列的项目数?

    在弹性容器中 我有 5 个具有列方向的项目 但在一定宽度下 我想每列显示 3 个项目 并强制其他项目换行有没有办法在没有固定高度的情况下做到这一点 我的代码 div class container div class item 1 item
  • 关键事件不适用于多个 ckeditors

    我有这个jsfiddle http jsfiddle net praveen jegan s47M3 41 当用户在屏幕上键入过滤词时 系统会向用户发出过滤词提醒ckeditor 在我的示例中 过滤后的单词are ants and word
  • LinearSVC和SVC(kernel=“线性”)有什么区别?

    I found sklearn svm LinearSVC http scikit learn org stable modules generated sklearn svm LinearSVC html and sklearn svm
  • Git 只允许从开发合并到主控

    我希望能够设置我们的分支 以便合并只能从开发分支进入主分支 我知道这听起来可能很严厉 我应该问自己一个问题 我是否不信任团队中的开发人员 目前我不信任 因为他们刚刚熟悉 Git 我会及时取消该限制 但在那之前这将很有用 是否可以 谢谢 标记
  • oidc-client-js 回调后无状态响应

    我认为这是与 Angular 5 2 8 6 相关的错误 与 Angular 5 2 7 一起工作正常 我创建一个ng5分支 https github com client sdk samples sample angular OidcCl
  • 如何在不通过 PhoneApplicationPage 的情况下访问 WIndows Phone 应用程序中的 NavigationService?

    如何在不通过 PhoneApplicationPage 的情况下访问 Windows Phone 应用程序中的 NavigationService 我的目标是在启动时将其传递给应用程序的主要视图模型 这种技术在 WPF 和 Silverli
  • 使用 LINQ 自动生成类型的简洁参数化查询

    我在工作中结合使用 LINQ 和 Dapper 出于性能原因 我正在用 Dapper 替换我的 LINQ 代码 我有很多通过从 SQL Server 拖放到 Visual Studio 数据库图表中创建的 LINQ 数据对象 在下面的实例中
  • 如何在 Twig 模板中使用 Mustache?它们都有相同的标签分隔符

    我在我的项目中使用 Twig 它使用这些标签 name 我也想将 Mustache 包含在我的项目中 但小胡子也使用相同的标签 name 所以存在冲突并且没有任何效果 Mustache 在他们的文档中提供的解决方案当然不起作用 因为我必须输
  • Gevent猴子解锁

    我正在分多个步骤执行我的程序 其中之一是使用gevent Monkey patch from gevent import monkey monkey patch all 一切都很好 但是我用完之后可以取消补丁吗 我想返回到我的默认套接字函数
  • 实际上,如何从工作区中的目录中删除文件,而这些文件不属于工作区?

    如果我要删除的文件不属于工作区 那么如何从工作区的目录中删除文件 我的文件系统上有一个目录 其中包含从 perforce 获取的文件 但在某些进程运行后 它会在这些目录中创建一些新文件 是否有 perforce 命令可以删除这些生成的不属于
  • 如何调试“4005 路径未找到”错误?

    我正在尝试将 Pusher 与使用 Backbone js 的 Web 应用程序集成 我正在遵循 Pusher 文档中的 Pusher with Backbone 指南 因此 我在应用程序启动时看到 Web 控制台中弹出此错误 Pusher
  • 如果我打开一个已经在 C++ 中打开的文件会发生什么

    想象一下我声明了一个输出文件 如果我用这段代码打开它两次会发生什么 它还可以工作吗 ofstream outfile outfile open record txt std ofstream app outfile open record
  • PHPExcel CSV 到 XLSX

    我在将文件从 CSV 转换为 XLSX 格式时遇到问题 索引 php h1 Convert CSV to XLSX h1