2016-06-22 39 views
0

我使用phpexcel從xlsx輸入數據到mysql數據庫。 我的excel文件具有使用公式計算出的值,對例如:excel公式到mysql數據庫使用phpexcel

= SUM(J21:J24)

我phpexcel腳本運行良好,然而,在Excel文件示出了使用式數據「上傳後爲0。

我的PHP腳本如下:

<?php 
$connect = mysqli_connect("localhost", "root", "", "unhrd_fund_balance"); 
include ("PHPExcel/IOFactory.php"); 
$html="<table border='1'>"; 
$objPHPExcel = PHPExcel_IOFactory::load('sample2.xlsx'); 
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) 
{ 
     $highestRow = $worksheet->getHighestRow(); 
     for ($row=2; $row<=$highestRow; $row++) 
     { 
      $html.="<tr>";   

      $ini = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(0, $row)->getValue()); 
      $progkey = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(1, $row)->getValue()); 
      $grantkey = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(2, $row)->getValue()); 
      $tod = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(3, $row)->getValue()); 
      $tdd = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(4, $row)->getValue()); 
      $fund = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(5, $row)->getValue()); 
      $orderkey = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(6, $row)->getValue()); 
      $budgetalloc = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(7, $row)->getValue()); 
      $precommit = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(8, $row)->getValue()); 
      $commit = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(9, $row)->getValue()); 
      $actuals = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(10, $row)->getValue()); 
     $totalcommit = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(11, $row)->getValue()); 
      $availablebudget = mysqli_real_escape_string($connect,$worksheet->getCellByColumnAndRow(12, $row)->getValue()); 

      $query = "insert into fund_balances(INITIATIVE, FUNDED_PROG_KEY, GRANT_KEY, TOD, TDD, FUND, ORDER_KEY, BUDGET_ALLOC, PRE_COMMIT, COMMIT, ACTUALS, TOTAL_COMMIT,AVAILABLE_BUDGET) values('".$ini."','".$progkey."','".$grantkey."','".$tod."','".$tdd."','".$fund."','".$orderkey."','".$budgetalloc."','".$precommit."','".$commit."','".$actuals."','".$totalcommit."','".$availablebudget."')"; 

      mysqli_query($connect, $query); 

      $html.= '<td>'.$ini.'</td>'; 
      $html .= '<td>'.$progkey.'</td>'; 
      $html .= '<td>'.$grantkey.'</td>'; 
      $html .= '<td>'.$tod.'</td>'; 
      $html .= '<td>'.$tdd.'</td>'; 
      $html .= '<td>'.$fund.'</td>'; 
      $html .= '<td>'.$orderkey.'</td>'; 
      $html .= '<td>'.$budgetalloc.'</td>'; 
      $html .= '<td>'.$precommit.'</td>'; 
      $html .= '<td>'.$commit.'</td>'; 
      $html .= '<td>'.$actuals.'</td>'; 
      $html .= '<td>'.$totalcommit.'</td>'; 
      $html .= '<td>'.$availablebudget.'</td>'; 
      $html .= "</tr>"; 
     } 
} 
$html .= '</table>'; 
echo $html; 
echo '<br />Data Inserted'; 
?> 

在上面的代碼中,「$報表」使用Excel公式,並在數據庫空。

+0

您正在創建一個包含這些值的HTML表。是''​​'。$ actuals。'''也顯示爲'$實際'0?或者是其他東西?什麼例如?另外,什麼樣的字段數據類型是MySQL表中的'ACTUALS'字段? –

+0

該表格顯示其中的公式,而不是零。 – compcrk

+0

ACTUALS是Excel表格中計算值的公式 – compcrk

回答

0

單元的getValue()方法將返回公式本身;如果要獲取該公式的評估結果,請改爲使用getCalculatedValue()方法....正如PHPExcel Documentation的說明