0

サーバー上でCOMが動かないのでxlsxPHPを使ってファイルを開きたい。 誰かがこれを行う方法を知っていますか?application/vnd.openxmlformats- officedocument.spreadsheetml.sheet

コメントされたセクションは、私が置き換えたいものです。phpexcelが正しい値を取得していないため、Excelに数式の値を強制的に計算させるためにこれを行っています。

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();
4

2 に答える 2

1

Excel は、説明したような非対話的なシナリオではサポートされていません。

問題が発生するのには、無数の技術的な理由があります。基本的に、Excel は、キーボードの端に人間がいるという前提で設計、プログラミング、およびテストされました。サーバー上で実行すると、50 回動作した後、警告なしでフリーズまたはクラッシュする可能性があります。私はそれが起こるのを見てきました。

契約/ライセンスの問題もあります。Office のライセンスでは、基本的に、Web サイトのすべてのユーザーが、サーバー上で実行している Excel と同じバージョンの有効なライセンスを持っている必要があります。これにより、インターネットからアクセスできるサイトで Excel を使用することができなくなります。ただし、サイトがイントラネット サイトであり、ユーザーが適切なライセンスを取得している場合は、Excel を使用できます。

サーバー側でサポートされている Excel のサブセットである Excel Services を使用することもできます。これは、SharePoint の特定のバージョンとエディションで利用できる機能です。明らかに、これは予算がある場合、または既に SharePoint を持っている場合にのみ実行可能です。

Microsoft の公式ガイドラインを参照してください。

http://support.microsoft.com/kb/257757

この回答も参照してください:

https://stackoverflow.com/a/726450/2230

于 2013-04-11T12:48:05.850 に答える
0

http://phpexcel.codeplex.com/のコードを試しましたか?

于 2013-04-11T04:43:33.510 に答える