【问题标题】:Add Missing Date in MYSQL database during import Data From Excel在从 Excel 导入数据期间在 MYSQL 数据库中添加缺失日期
【发布时间】:2021-11-12 19:20:13
【问题描述】:

我正在尝试使用 PhpSpreadsheet 从 Excel 工作表中导入数据。 使用下面的代码,它可以按照我的要求正常工作。

$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load("uploads/temp.xlsx");
$worksheet = $spreadsheet->getActiveSheet();
$spreadSheetAry = $worksheet->toArray();
$sheetCount = count($spreadSheetAry);
//echo $sheetCount;

$sql = "INSERT INTO tbl_tour (user_email,date,day,school_name,visit_status,reason) VALUES (?,?,?,?,?,?)";
$stmt=$mysqli->prepare($sql);

for ($i = 1; $i <= $sheetCount; $i ++) {
        $date ="";
        $day ="";
        $school_name ="";
        $visit_status = "";
        $reason = "";
        if (isset($spreadSheetAry[$i][1])) {
            $date = $spreadSheetAry[$i][1];
        }
        if (isset($spreadSheetAry[$i][2])) {
            $day = $spreadSheetAry[$i][2];
        }
        if (isset($spreadSheetAry[$i][3])) {
            $school_name = $spreadSheetAry[$i][3];
        }
        if (isset($spreadSheetAry[$i][4])) {
            $visit_status = $spreadSheetAry[$i][4];
        }
        if (isset($spreadSheetAry[$i][5])) {
            $reason = $spreadSheetAry[$i][5];
        }

           $stmt->bind_param('ssssss',$email,$date,$day,$school_name,$visit_status,$reason);
           $stmt->execute();
           
           
           
}
$stmt->close();

我的 Excel 表中有类似 SR、DATE、DAY、SCHOOL NAME、VISIT STATUS、REASON 的列。

DATE CONTAINS DATE OF MONTH 从 1 到 31。现在问题是它缺少 SUNDAY 行。我正在寻找使用该日期的自定义数据甚至缺少日期的添加行,但我不知道该怎么做。我的当前日期列包含这样的数据

01-09-2021
01-09-2021
02-09-2021
02-09-2021
03-09-2021
03-09-2021
04-09-2021
04-09-2021
06-09-2021
06-09-2021
07-09-2021
07-09-2021
08-09-2021
08-09-2021
09-09-2021
09-09-2021
11-09-2021
11-09-2021
13-09-2021
13-09-2021
14-09-2021
14-09-2021
15-09-2021
15-09-2021
16-09-2021
16-09-2021
17-09-2021
17-09-2021
18-09-2021
18-09-2021
20-09-2021
20-09-2021
21-09-2021
21-09-2021
22-09-2021
22-09-2021
23-09-2021
23-09-2021
24-09-2021
24-09-2021
25-09-2021
25-09-2021
27-09-2021
27-09-2021
28-09-2021
28-09-2021
29-09-2021
29-09-2021
30-09-2021
30-09-2021

【问题讨论】:

    标签: php mysql phpspreadsheet


    【解决方案1】:

    不确定我是否正确理解了您的问题。也许这会有所帮助:

    if (isset($spreadSheetAry[$i][1])) {
      $date = $spreadSheetAry[$i][1];
      if (DateTime::createFromFormat('d-m-Y', $date) === false) {
        $date = ... // do your magic here :)
      }
    }
    

    祝你好运!

    【讨论】:

      【解决方案2】:

      我建议您在第一天和最后一天之间进行迭代。

      $startTime = strtotime($spreadSheetAry[1][1] );
      $endTime = strtotime( $spreadSheetAry[$sheetCount][1] );
      $j = 1;
      // Loop between timestamps, 24 hours at a time
      for ( $i = $startTime; $i <= $endTime; $i = $i + 86400 ) {
        $thisDate = date( 'Y-m-d', $i ); // 2010-05-01, 2010-05-02, etc
        if($spreadSheetAry[$j][1]===$thisDate){
          // Date exists, do something.
          $j++;
        }else{
          // Date does not exist, do something else.
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-04-06
        • 1970-01-01
        • 2016-04-24
        • 1970-01-01
        • 2023-01-22
        • 1970-01-01
        • 1970-01-01
        • 2023-01-19
        • 1970-01-01
        相关资源
        最近更新 更多