- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个处理 Excel 的复杂程序,因此我使用 PHPExcel 从浏览器搜索和编辑 Excel 文件。我的问题出在程序的编辑部分,所以我编写了一个基本程序来编辑现有的 Excel 页面。 PHPExcel 似乎无法将在 Excel 中创建的文件识别为 Excel 文件。这是在我自己的服务器上使用我用 Excel 创建的 Excel 页面完成的。文件名为 062014.xlsx。在 HTML 方面,我将文本框命名为 C3、D3 和 E3,因此它们的名称很容易与 Excel 单元格对应(php $cell 变量的来源)。我想要做的是获取 html 文本框中的文本,并使用 html 文本框中的数据重写 Excel 中的相应单元格。发布的是我的 html 和 php 的全部代码,如果有人能告诉我我的程序哪里出了问题,我将不胜感激。
<html>
<head>
<form method="POST" action="lilrevisetest.php" id="excelform">
<input type="text" value="foo" name="C3" />
<input type="text" value="foo" name="D3" />
<input type="text" value="foo" name="E3" />
<button type="submit">Submit</button>
</form>
</body>
</html>
<body>
<html>
<?php
include 'PHPExcel/IOFactory.php';
$n=1;
$x="C";
$y=1;
$file = "062014.xlsx";
$inputFileType = PHPExcel_IOFactory::identify($file);
$inputFileType = 'Excel5';
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(false);
$objPHPExcel = $objReader->load($file);
$objWorksheet = $objPHPExcel->getActiveSheet();
$fileObj = fopen("$file", "rt" );
$y = 3;
$x= "C";
for($n=1; $n<4; $n++){
$cell = $x . $y;
echo $cell;
if (isset($_POST[$cell])){
$string = ($_POST[$cell]);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $inputFileType);
$objWorksheet ->setCellValue("$cell","$string");
$objWriter->save($file);
}
echo "<td> <input type ='text' value= '$string' name = '$cell'/></td>";
$x= ++$x;
}
?>
</html>
</body>
最佳答案
您正在尝试使用 Excel5
(BIFF 格式)阅读器加载 xlsx
文件(OfficeOpenXML 格式)。
$inputFileType = 'Excel5';
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
您应该针对要加载的文件类型使用正确的阅读器,否则会出错。
你已经用过了
$inputFileType = PHPExcel_IOFactory::identify($file);
识别文件类型和要使用的正确阅读器,那你为什么要忽略它并自己手动(错误地)设置它?
另外
另一个问题可能是当您尝试保存文件时文件已经打开。
您正在使用 PHPExcel 加载程序加载 $file
(062014.xlsx
),没问题。
出于某种未知原因,您随后执行
$fileObj = fopen("$file", "rt" );
虽然您根本没有对 $fileObj
做任何事情,但是这样做会使其保持打开状态
当您尝试使用 $objWriter->save($file);
保存时,文件仍保持打开状态,因此保存将失败(与文件名无关,只是事实该文件已打开)。
解决方法很简单,就是删除行
$fileObj = fopen("$file", "rt" );
关于php - '文件名 062014.xlsx 未被识别为 OLE 文件',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28688652/
我正在尝试使用 SAP ABAP OLE OBJECT 打开受密码保护的 excel 文件,如下所示: DATA: lt_excel_line(4096) OCCURS 10 WITH HEADER
我目前正在实现一个 IOleObject 接口(interface),以将我们软件的可视化数据嵌入到其他软件(如 PowerPoint)中。我们的软件创建测量数据的图形评估(图表等)。 目标是,最终用
我对此很陌生。我正在尝试将 355 行传输到目的地 我有 3 列要转移 Customer_Number、Crime_Type、Action_Date。 当我创建源表时都是nvarchar(50) 目标
我有一个包含 2 个组件的数据流任务: 属于 SELECT 查询的 OLEDB 数据源任务: SELECT ACCOUNTID FROM JOBS WHERE STATUS=3 OLE DB 命令任务
我有一个包含 2 个组件的数据流任务: 属于 SELECT 查询的 OLEDB 数据源任务: SELECT ACCOUNTID FROM JOBS WHERE STATUS=3 OLE DB 命令任务
我有一个自定义数据库,我想为其编写一个 OLE DB 提供程序,但我希望用 C# 来完成。 我找到了这两个站点,但所有示例都在 C 中。 http://msdn.microsoft.com/en-us
我正在运行以下代码 /*Fetchinch Last CustID from custMaster*/ int ID = 0; try { con.Open(); da = new
我使用 oledb 提供程序(SQLOLEDB 和 SQL Native OLEDB 提供程序)创建了一个示例应用程序。 案例 1:提供者 = SQLOLEDB hr = ::CoInitialize
我花了几个小时试图解决这个问题。对于给我带来问题的列,我在 sql server 中使用标量函数来获取名称。该功能是正确的并且工作正常。然后我使用一个存储过程与 ssis 一起使用。给我错误的列指出它
我的源是 TXT 平面文件源,目标是 OLE DB 类型。 (见图) 我发现了一个非常basic tutorial on Code Project创建一个包。我完成了这些步骤,但是在调试时出现了一个奇
我正在对SQL Server数据库使用OLE DB批量复制操作,但是在将数据加载到bit列时遇到了麻烦-它们总是填充有true! 我根据下面的代码段从simple reproduction progr
我目前生活在 90 年代,我收到了这段遗留代码。我对 COM/OLE/MFC/ATL 不了解,所以我问这个问题,希望当时有经验的人可以帮助我找出这个问题。 我拥有的是这个非常古老/遗留的 MFC/AT
我使用 WTL 创建了一个 Dialog,继承自 CDialogImpl 类,在主对话框中我创建了另一个对话框,并在第二个子对话框中创建了一个列表控件。我想向列表控件添加拖放功能,我在网上阅读了有关
我使用 WinAPI 函数在 C# 中创建 OLE 文件。 WinAPI 函数是: [DllImport("ole32.dll")] public static extern int O
我正在尝试调整图像大小以在我的 OLED 设备上显示。 我想要显示的图像是: 目前,我的 OLED 显示屏仅显示图像的一小部分: 基于How to resize image? ,我在脚本中添加了 ne
如何在 128x64 OLED 显示屏上滚动长文本 我正在使用 Adafruit_SSD1306 驱动程序 此代码仅显示“This”,因为文本太大而无法显示,但是当我滚动文本时,仅“This”滚动而不
我无法解决这些术语之间的差异。 是COM和ActiveX同义词吗? ActiveX对象仅仅是公开IDispatch的COM对象吗? 许多较旧的MSDN页面提到IDispatch时没有任何COM上下文。
我们在 Delphi 7 中使用一些 OLE 自动化来打开一个 word 文档,然后在加载后保存它,并将其加载到数据库中。 这工作正常,但部分要求是在 OLE 位发生时有一个进度条,如果 OLE 部分
在我当前使用的产品中,Excel 电子表格是使用 Delphi 的 OLE 生成的。电子表格包含许多日期,应用程序从系统设置加载短日期格式并将其应用到单元格。除非系统格式至少设置为俄语、巴什基尔语、鞑
这个 c++ question 的语法是什么?在德尔福? 使用 oleContainer 后,并尝试执行 SaveDocumentAs 但不起作用。我认为这可能是一个不错的选择。 更新:感谢您的翻译,
我是一名优秀的程序员,十分优秀!