如何通过使用Excel工作表中的PHP删除重复的ID来计算列值的总和?

时间:2019-02-01 18:39:41

标签: php mysqli

否,我正在计算总余额amt($ row ['Bal‌anceAmt'])。在此另一个字段中,有发票编号。发票编号将是重复的。如果重复出现,则一次只能计算余额。例如,发票数字为1,1,2,3,4,4,7,余额为10,10,30,40,20,20,80,总余额应为20 + 30 + 20 + 80 = 15 现在的问题是,计算所有余额也包括所有重复的发票编号 有什么办法可以消除此错误?

 $sql = "SELECT a.cusName as CustomerName, a.invoiceNo as InvoiceNo,
                a.bal_amt as BalanceAmt,
                b.itemsName as Items,b.rate as Rate,
                ROUND(b.amt_vat + b.amount, 2) as Amount
                FROM invoices a, invoice_items b where a.invoiceID=b.invoiceid and a.status IS NULL
                and a.invoiceDate between '$getfromdate' and '$gettodate' 
                order by a.invoiceID desc";

  $result = mysqli_query($link, $sql);
  $resultpaymenttotal = mysqli_query($link, $sqlgettotalpyment);


  // Header info settings
  header("Content-Type: application/xls");
  header("Content-Disposition: attachment; filename=$xls_filename");
  header("Pragma: no-cache");
  header("Expires: 0");

  /***** Start of Formatting for Excel *****/
  // Define separator (defines columns in excel & tabs in word)
  $sep = "\t"; // tabbed character
    $col_cnt = 0;
  // Start of printing column names as names of MySQL fields
  for ($i = 0; $i<mysqli_num_fields($result); $i++) {
    $field_info = mysqli_fetch_field($result);
    $col = "{$field_info->name}";
    echo $col . "\t";
     $col_cnt++;
  }
  print("\n");
  // End of printing column names

  // Start while loop to get data
  $row_cnt = 0;
  $tot_BalanceAmt = 0;
  while($row = mysqli_fetch_assoc($result))
  {
    $schema_insert = "";
    $schema_insert .= $row['CustomerName'].$sep.$row['CustomerMob'].$sep.$row['InvoiceNo'].$sep.$row['AdvanceAmt'].$sep.$row['BalanceAmt'].$sep.$row['Items'].$sep.$row['Rate'].$sep.$row['Amount'];
    $tot_BalanceAmt += $row['BalanceAmt'];
    $schema_insert = str_replace($sep."$", "", $schema_insert);
    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
    $schema_insert .= "\t";
    print(trim($schema_insert));
    print "\n";
    $row_cnt ++;
  }
  print "\n";

  $schema_insert = "";
  for($i=0;$i<$col_cnt-25;$i++)
  {
    $schema_insert .= " ".$sep;
  }
  $schema_insert .= "TOTAL BALANCE = ".$sep;
  $schema_insert .= $tot_BalanceAmt.$sep;
  $schema_insert = str_replace($sep."$", "", $schema_insert);
  $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
  $schema_insert .= "\t";
  print($schema_insert);
  print "\n";

1 个答案:

答案 0 :(得分:1)

尝试一下:

  1. 初始化后立即const staticID = "9B60F750-C64F-433A-8C1E-9E88639DC503"; onLoad(object) { object.uuid = staticID; } 添加$tot_BalanceAmt = 0;

  2. 放入 while循环代码字符串的正文:

$invoiceHasProcessed = array();

替换为

$tot_BalanceAmt += $row['BalanceAmt'];