我想使用xlsx
使用PHP打开application/vnd.openxmlformats- officedocument.spreadsheetml.sheet
文件,因为COM无法在服务器上运行。
有人知道怎么做吗?
评论部分是我要替换的部分。我这样做是为了强制excel计算公式中的值,因为phpexcel没有得到正确的值。
如果有办法配置COM在服务器上运行,请告诉我。
这是我的代码:
$inputFileName = 'FORMATO PEDIDO.xlsx';
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objPHPexcel = PHPExcel_IOFactory::load($inputFileName);
$objWorksheet = $objPHPexcel->setActiveSheetIndex(0);
$objWorksheet = $objPHPexcel->getActiveSheet();
$claves = $_POST['claves'];
$checked = $_POST['productos'];
$cantidades = $_POST['pallet'];
$id_sucursal_seleccionada = $_POST['recibe_sucursal'];
$sql_query = mysql_query("SELECT * FROM sucursal WHERE Id_Sucursal = '$id_sucursal_seleccionada'");
$sql_array = mysql_fetch_array($sql_query);
$nombre_sucursal = $sql_array['Nombre'];
$i=0;
$j=22;
foreach($claves as $clave_producto)
{
if($checked[$i])
{
$cantidad = $cantidades[$i];
$objWorksheet->getCell('B'.$j)->setValue($clave_producto);
$objWorksheet->getCell('F'.$j)->setValue($cantidad);
$j++;
}
$i++;
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPexcel,$inputFileType);
$objWriter->setPreCalculateFormulas(false);
$objWriter->save($inputFileName);
$workbook = "C:/Documents and Settings/sosam1/My Documents/Dropbox/htdocs/Merdiz/inventarios/FORMATO PEDIDO.xlsx";
$ex = new COM("Excel.application") or Die ("Did not connect");
$wkb = $ex->application->Workbooks->Open($workbook) or Die ("Did not open");
$ex->Application->ActiveWorkbook->Save();
$ex->application->ActiveWorkbook->Close("False");
$objPHPexcel = PHPExcel_IOFactory::load($inputFileName);
$objWorksheet = $objPHPexcel->setActiveSheetIndex(0);
$objWorksheet = $objPHPexcel->getActiveSheet();
答案 0 :(得分:1)
在您描述的非交互式场景中不支持Excel。
有许多技术原因导致它出现问题。基本上,Excel的设计,编程和测试都假设键盘末端会有人。在服务器上运行它可能会工作50次,然后冻结或崩溃,没有任何警告。我见过它。
还存在合同/许可问题。即使您使其足够好用于您的目的,Office的许可证基本上要求该网站的每个用户还必须拥有与您在服务器上运行的相同版本的Excel的有效许可证。这简直使得无法在可从Internet上获得的站点上使用Excel,但如果您的站点是Intranet站点且用户获得正确许可,则可以使用Excel。
您还可以使用Excel Services,它是服务器端支持的Excel的子集。这是SharePoint的某些版本和版本中提供的功能。显然,只有拥有预算或者无论如何已经拥有SharePoint,这都是可行的。
请参阅Microsoft官方指南:
http://support.microsoft.com/kb/257757
另见答案:
答案 1 :(得分:0)
您是否尝试过以下代码? http://phpexcel.codeplex.com/