Php 我可以用application/vnd.openxmlformats-officedocument.spreadsheetml.sheet打开xlsx文件吗?

Php 我可以用application/vnd.openxmlformats-officedocument.spreadsheetml.sheet打开xlsx文件吗?,php,excel,com,Php,Excel,Com,我想用PHP使用application/vnd.openxmlformats-officedocument.spreadsheetml.sheet打开一个xlsx文件,因为COM在服务器上不工作。 有人知道怎么做吗 注释的部分是我要替换的部分。我这样做是为了迫使excel计算公式中的值,因为phpexcel没有得到正确的值 如果有办法将COM配置为在服务器上运行,请告诉我 这是我的代码: $inputFileName = 'FORMATO PEDIDO.xlsx';

我想用PHP使用
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
打开一个
xlsx
文件,因为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();

您是否尝试了来自的代码-

Excel在您描述的非交互式场景中不受支持

有无数的技术原因导致它有问题。基本上,Excel的设计、编程和测试都假设键盘末端会有一个人。在服务器上运行它可能会工作50次,然后在没有警告的情况下冻结或崩溃。我亲眼目睹了这一切

还有一个合同/许可问题。即使您使其能够很好地满足您的需要,Office许可证基本上要求网站的每个用户还必须拥有与您在服务器上运行的Excel版本相同的有效许可证。这就使得在一个可以从Internet访问的站点上使用Excel变得不可能,尽管如果您的站点是intranet站点并且用户获得了适当的许可,您可以使用Excel

您还可以使用Excel Services,它是服务器端支持的Excel的子集。这是SharePoint的某些版本和版本中提供的一项功能。显然,只有当您有预算,或者已经有SharePoint时,这才是可行的

请参阅Microsoft官方指南:

另见此答案:


是的,我正在使用这个。正如您在代码中看到的,我使用它来打开、编辑和保存,但这并没有使office运行计算,因为phpexcel进行计算而不是让ms office为其工作phpexcel进行计算有什么问题(您可以在进行计算时禁用它)。。。您需要从MS Excel本身获取哪些PHPExcel不提供的信息?PHPExcel生成了哪些不正确的值?您可以参考
注释部分
;但是我在代码中没有看到任何注释;你为什么要把PHPExcel和COM结合起来?请解释你的问题!