PhpSpreadsheet 正在损坏文件

2024-02-28

我正在使用 PhpSpreadsheet 修改现有文件并将其发送到浏览器,但是每次下载文件 excel 都会出现以下错误:

我们发现 filename.xlsx 中的某些内容存在问题。您希望我们尽力恢复吗?如果您信任此工作簿的来源,请单击“是”。

我已将所有内容剥离回以下代码。我打开的模板文件是一个全新的 Excel 文件,未对其进行任何编辑(以避免模板中已存在错误)。我可以从驱动器打开此文件,没有任何问题。

$spreadsheet = IOFactory::load(storage_path() ."\Template - English.xlsx");

// Redirect output to a client’s web browser (Xlsx)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="filename.xlsx"');
header('Cache-Control: max-age=0');

// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');

// If you're serving to IE over SSL, then the following may be needed
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header('Pragma: public'); // HTTP/1.0

$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');

完成修复过程后,我从 Excel 收到以下消息,一切似乎都工作正常。

Excel 完成文件级验证和修复。本工作簿的某些部分可能已被修复或丢弃。

**编辑: ** 当我使用生成新文件时发生同样的错误$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();


我不知道你的问题是否解决了,但我也遇到了同样的问题。 我的代码如下所示:

$strFilename = sprintf('%s_%s_subscriptions', date('Y-m-d-H-i'), $alias);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$strFilename.'.xlsx"');
header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($objSpreadsheet, 'Xlsx');
$writer->save('php://output');

而且Excel提示和你一样的错误。但看起来 PHPSpreadSheet 创建了一个缓冲区,并且在保存电子表格后不会关闭它。 添加一个“骰子;”最后一行之后,它解决了问题......

所以最终代码:

$strFilename = sprintf('%s_%s_subscriptions', date('Y-m-d-H-i'), $alias);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$strFilename.'.xlsx"');
header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($objSpreadsheet, 'Xlsx');
$writer->save('php://output');
die;

希望能帮助到你 !

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

PhpSpreadsheet 正在损坏文件 的相关文章

  • 使用 ClosedXML 附加到 excel 文件

    我需要将新数据附加到使用 ClosedXML 创建的现有 Excel 文件中 如何使用 ClosedXML 附加到 Excel 文件 如何获取最后一条记录的行号并将其附加到该行号上 或者还有其他内容 Thanks 打开现有工作簿 然后使用L
  • VBA 代码中的 Excel 公式

    所以 在 Sheet1 中 我有一些名称的基础 它看起来像这样 在 Sheet2 中 我正在使用 Sheet1 中的这些名称 我这样做的方式是在 A 列中输入代码值 在 B 列中输入名称 在 C 列中输入姓氏 看起来像这样 我已经用公式完成
  • Excel - 根据选择创建图表的宏

    我想就以下问题寻求您的帮助 因为我必须创建大量图表 所以我想要一个宏来根据我的选择插入图表 由于我对 VBA 没有任何了解 但现在需要它 至少现在 我真的应该自己学习使用它 我将感谢您的帮助 基本上 我需要知道如何调整我记录的代码 以便根据
  • 使用查询选择器从 VBA 中抓取

    我使用了该网站的代码来提取数据site https bazashifer ru proflist profnastil Option Explicit Public Sub GetInfo Dim sResponse As String i
  • Excel如何获取一个时间间隔内的小时数?

    我有两列 Night shift start 19 00 Night end 04 00 我每天都有一些日期列 Work started 07 30 Worked ended 22 00 我想获取夜班开始和夜班结束之间的小数小时数 我需要计
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • 在VBA中将字符串文本拆分为单独的行

    我的 excel 或 csv 文件 中有 2 个文本框 如下所示 文本框 1 包含 11111 22222 33333 文本框 2 包含 55555 11111 22222 33333 55555 我希望 之间的文本位于 3 个不同的行上
  • 将所有工作簿工作表复制到新工作簿 VBA

    我正在使用此代码将工作簿中的每张工作表复制到新工作簿中 它工作正常 但它颠倒了工作表的顺序 是否有办法阻止它这样做 Sub copy copies all the sheets of the open workbook to a new o
  • 调用退出后应用程序未退出

    我有一个小问题 我似乎无法弄清楚 我正在将 DataGridView 它的内容 保存到 xls 文件中 我这样做没有任何问题 除了在我的任务管理器中它仍然显示它正在运行 我已致电 xlApp Application Quit 这被声明为 D
  • 实体框架、dll、excel

    我用C 编写了Excel使用的dll 该dll是COM注册的 我与 Excel 的连接没有问题 该 dll 使用实体框架 5 从 SQL Server 数据库检索数据 如果我通过控制台应用程序运行该 dll 则该 dll 工作正常 但是当我
  • 运行时错误“1004”:对象“_Global”的方法“Range”失败

    我在使用 Excel 时遇到问题 有一个生成参考号的表单 但是当我尝试生成参考号时 它有一条错误消息 运行时错误 1004 对象 Global 的方法 Range 失败 当我点击 调试 按钮时 它显示的代码如下 它突出显示代码第 4 行的错
  • 如何将 HTML 表格导出为 .xlsx 文件

    我有一个关于导出的问题HTML表格 as an xlsx文件 我做了一些工作 现在我可以将其导出为xls 但我需要将其导出为xlsx 这是我的 jsFiddle https jsfiddle net 272406sv 1 https jsf
  • 基于多个动态过滤条件过滤Excel范围

    我想过滤数据集 考虑几个可以根据可能值列表动态更改的过滤条件 我有过滤条件team其具有以下值 Team A Team B ALL 其中 ALL 是代表所有团队的通配符 对于第二个标准release 如果我想在过滤器中包含多个版本 则值之间
  • Excel 在“.xls”中发现不可读的内容。同时导出水晶报表到excel

    我正在将数据从 Crystal 报告导出到 PDF 工作正常 并显示所有记录 但是当我将其导出到 Excel 文件中并成功导出时 以及当我在 Excel 中打开它时给出错误消息 文件错误 数据可能已丢失 当我点击 确定 按钮时 在 Exce
  • MS Access 中的舍入

    VBA Access 中舍入的最佳方法是什么 我目前的方法是利用Excel方法 Excel WorksheetFunction Round 但我正在寻找一种不依赖Excel的方法 请注意 VBA Round 函数使用 Banker 舍入 将
  • 在 VBA 中按键对字典进行排序

    我使用 VBA 创建了一个字典CreateObject Scripting Dictionary 将源单词映射到要在某些文本中替换的目标单词 这实际上是为了混淆 不幸的是 当我按照下面的代码进行实际替换时 它将按照源单词添加到字典中的顺序替
  • 我需要代码在两行之间复制并粘贴到另一张表中,并给出任何值?

    例如 我有 50 行数据 第一行有学生的名字 我需要代码将数据从 RAM 复制到 RAMESH 在这之间我有 20 行 我需要代码来复制行并将其粘贴到另一张纸中 它不应该问我名字 默认情况下 它必须采用 RAM 和 RAMESH 名称 好的
  • Excel VBA 导出到文本文件。需要删除空行

    我有一个工作簿 使用以下脚本将其导出到文本文件 它工作正常 但是当我打开文本文件时 末尾总是有一个空行 这导致我在生成此文本文件后运行的另一个脚本出现问题 有关如何从导出中删除空行的任何帮助 Code Sub Rectangle1 Clic
  • VBA XML V6.0 如何让它等待页面加载?

    我一直在努力寻找答案 但似乎找不到任何有用的东西 基本上 我是从一个网站上拉取的 当您在该页面上时 该网站会加载更多项目 我希望我的代码在加载完成后提取最终数据 但不知道如何让 XML httprequest 等待 Edited Sub p
  • Confluence:使用 VBA 更新现有页面

    我尝试使用 VBA 更新 Confluence 页面 我的想法是使用REST API加载页面内容 修改内容然后上传修改后的版本 这是我的代码 Private Sub TestRESTApi Dim uname As String uname

随机推荐

  • 配置执行器端点安全

    Spring Boot Actuator 端点默认受基本 http 安全保护 可以更改为使用 Spring Security 吗 我已成功设置 Spring Security 并使用它来保护我的其他页面 I tried security b
  • 如何从nodejs中的process.environment中提取环境变量

    我已成功将条纹支付集成到我的虚拟 Nodejs 项目中 但我仍然面临一个问题 它不允许我继续前进 因为我必须将代码推送到我的 github 存储库 因此 我通过 npm 安装了 dotenv 包 并创建了一个 env 文件来存储我的条带密钥
  • 如何获取 Woocommerce 产品中的变体 ID

    我正在尝试进入一个插件 我正在编写产品的变体 ID 这是我写的 class mass public function construct add action woocommerce product after variable attri
  • Android minLines 和 maxLines 不能在同一个 TextView 中一起工作

    这里我只有 1 件商品ListView我展示了两个不同的TextViews末尾有不同颜色的ListView item 但问题是我想显示每个最多 3 行TextView但如果长度为TextView是小 但如果文本很大 它效果很好 当我添加an
  • 如何确保我的 django 项目正在使用我为其创建的虚拟环境?

    我知道已经有一个与此类似的问题 但我认为我想要的答案不存在 我是 django 的新手 我已经使用 virtualenv 和 django 项目创建了一个虚拟环境 但是我们如何知道我的项目正在使用虚拟环境的包而不是使用全局包 请给我一些详细
  • 在 Episerver 中截断 Xhtmlstring

    我需要获得截断的 Xhtmlstring 的 html 友好版本 因为截断时标签结尾可能会被截断 关于如何实现这一目标有什么想法吗 我想过先删除所有标签 然后进行剪切 但是 Episerver 内部是否有解决方案 或者这只是使用正则表达式进
  • Matplotlib 中的像素化动画

    我一直在使用 Matplotlib 的动画工具来制作动画人物 我注意到一个问题 对于具有大量帧的动画来说尤其明显 即图形的质量很快就会恶化 导致输出看起来像素化 模糊 例子 Messy grid lines pixelated output
  • 将 HTMLDocument 转换为可打印字符串

    我想将 Javascript DOM HTMLDcument 转换为可以写入文件的字符串 但是如何将 HTMLDocument 的字符串转换为 xml Update如果可能的话 我希望看到应用任何动态 JavaScript 渲染后生成的 h
  • Python从文件中删除一行或多行而不修改现有内容

    我必须根据文件中的用户输入删除字符串或字符串列表 我参考了下面的链接 一切正常 删除文件中的特定行 python https stackoverflow com questions 4710067 deleting a specific l
  • Jenkinsfile 中的 Jenkins 全局环境变量

    如何在 Jenkinsfile 中调用全局环境变量 例如 如果我有一个变量 name credentialsId value xxxx xxxx xxxxx xxxxxxxxx 如何在 groovy 脚本中使用它 I tried crede
  • 视差效果使元素延迟滚动

    我正在尝试复制此网站 www adidas co uk climazone 这些元素似乎只在用户滚动后轻微移动 我怎样才能实现这个目标 谢谢你 Here s DEMO http s codepen io CY5 debug vKkELx它实
  • 正则表达式匹配任何单词 - 没有非贪婪运算符

    我想将任何内容匹配到特定单词 例如 C 中的结束评论 但是 由于性能原因 我不想使用非贪婪运算符 例如 要匹配 C 注释 对于我的文件来说太慢了 有没有可能提高性能 当然可以 使用展开循环技术 http www softec lu site
  • 通过 Vagrant 在 Docker 中共享卷

    我有一个 Vagrant virtualbox 它托管一个 Docker 容器 主机有一个需要在虚拟机和容器中访问的文件夹 Host host path gt VM vagrant path gt Container docker path
  • 名称和尺寸来自 NSFont

    我试图在互联网上找到一些东西 但现在我没有答案 所以如果你能帮助我那就太好了 到目前为止 我有一个 NSFont 对象 但我想要字体的名称 如 NSString 和大小 这样我就可以输出它 就像是 NSFont fontWithName M
  • 在 NLTK 中使用斯坦福 NER Tagger 提取人员和组织列表

    我正在尝试使用 Python NLTK 中的斯坦福命名实体识别器 NER 提取人员和组织的列表 当我跑步时 from nltk tag stanford import NERTagger st NERTagger usr share sta
  • Susy:为给定的屏幕宽度(断点 px 值)创建网格,并且不知道单列的宽度(非内容优先方法)

    我在用着Susy http susy oddbird net 我未能利用内容优先的方法 并决定采用 window px widths first 起初我尝试了内容优先的方法 http adactio com journal 4523 到网格
  • scanf() 格式字符串中尾随空格有何影响?

    有什么区别scanf d and scanf d 在此代码中 区别在于格式字符串中的尾随空白 include
  • Python:忽略 xml.etree.ElementTree 中的名称空间?

    如何告诉 ElementTree 忽略 XML 文件中的命名空间 例如 我更愿意查询modelVersion 如声明1 而不是 http maven apache org POM 4 0 0 modelVersion 如声明2 pom
  • matplotlib:如何在图形上选择shift点击?

    我有一个 matplotlib 并且创建了一个button press event像这样 self fig canvas mpl connect button press event self onClick def onClick sel
  • PhpSpreadsheet 正在损坏文件

    我正在使用 PhpSpreadsheet 修改现有文件并将其发送到浏览器 但是每次下载文件 excel 都会出现以下错误 我们发现 filename xlsx 中的某些内容存在问题 您希望我们尽力恢复吗 如果您信任此工作簿的来源 请单击 是