【问题标题】:Exporting/Importing tables with different date format导出/导入不同日期格式的表格
【发布时间】:2019-06-12 05:42:51
【问题描述】:

我有这个问题,当我将表导出为 csv 文件并在 excel 上打开它时:日期似乎有不同的格式(在数据库中:yyyy-mm-dd,而在 excel dd/mm/ yyyy)

有没有办法在导出或导入时解决这些问题以具有相同的格式

这是我导入时的代码

  elseif ($_POST["program"]=="dengue"){
        $filename = $_FILES['file']['tmp_name']; 
        $file = fopen($filename, "r");
        while (($getData = fgetcsv($file, 10000, ",")) !== FALSE)
         {



           $sql = "INSERT into lcho_dengue_activities (district_id,barangay_id,month,year,dengue_ind1,dengue_ind2,dengue_ind3,dengue_ind4,dengue_ind5,dengue_ind6,dengue_ind7,dengue_ind8,dengue_ind9,dengue_ind10,dengue_ind11,date) 
               values ('".$getData[0]."','".$getData[1]."','".$getData[2]."','".$getData[3]."','".$getData[4]."','".$getData[5]."','".$getData[6]."','".$getData[7]."','".$getData[8]."','".$getData[9]."','".$getData[10]."','".$getData[11]."','".$getData[12]."','".$getData[13]."','".$getData[14]."','".$getData[14]."')";


            if(!mysqli_query($con, $sql))
            {
            echo ("Error description: " . mysqli_error($con));  
            }
            else {
                  echo "<script type=\"text/javascript\">
                    alert(\"CSV File has been successfully Imported.\");
                    window.location = \"imports.php\"
                </script>";
            }
        }

在导出时

            if($_POST["program"]=="dengue"){
      // get records from database
    $query = $db->query("SELECT * FROM lcho_dengue_activities ");

     if($query->num_rows > 0){
$delimiter = ",";
$filename = "dengueactivities" . date('Y-m-d') . ".csv";

//create a file pointer
$f = fopen('php://memory', 'w');


//output each row of the data, format =line as csv and write to file pointer
while($row = $query->fetch_assoc()){

    $lineData = array( $row['district_id'], $row['barangay_id'], $row['month'], $row['year'],$row['dengue_ind1'],$row['dengue_ind2'],$row['dengue_ind3'],$row['dengue_ind4'],$row['dengue_ind5'],$row['dengue_ind6'],$row['dengue_ind7'],$row['dengue_ind8'],$row['dengue_ind9'],$row['dengue_ind10'],$row['dengue_ind11'],$row['date']);

    fputcsv($f, $lineData, $delimiter);
}

//move back to beginning of file
fseek($f, 0);

//set headers to download file rather than displayed
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="' . $filename . '";');

//output all remaining data on a file pointer
fpassthru($f);

} 退出;

需要有相同的格式

【问题讨论】:

  • 警告:您对SQL Injections 持开放态度,应该真正使用参数化的prepared statements,而不是手动构建查询。它们由PDOMySQLi 提供。永远不要相信任何类型的输入,尤其是来自客户端的输入。即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data
  • 能否正确格式化您的代码?
  • 为什么您的代码中似乎使用了任意常量?例如dengue & program
  • 我已经编辑过了。谢谢。这些是我的代码的一部分,我只是想知道是否有办法将日期从 .csv 文件导入到 sql 格式为 yyyy-mm-dd 因为 .csv 文件的格式为 dd/mm/yyyy 或从sql 其中 yyyy-mm-dd 是格式并在 .csv 上以相同的格式输出它
  • 为什么不按照你想要的方式格式化它呢?使用DateTime class

标签: php sql csv import export


【解决方案1】:

你写的很简短:

“我有这个问题,当我将表格导出为 csv 文件并在 excel 上打开时:日期似乎有不同的格式(在数据库中:yyyy-mm-dd,而在 excel dd/mm /yyyy)"

似乎这就是野兽的本性。请记住,.csv 文件不是 Excel 文件(它可能存储有关如何格式化所有内容的确切说明)。因此,当 Excel 打开一个 .csv 文件时,它会尝试猜测如何格式化数据列,有时这可能不是您想要的。

类似的事情是试图显示 2 个小数位,其中 Excel 显示它认为重要的任何内容,例如 0.12、0.13、0.1、0。我看到的另一个类似的奇怪事情是前 10 行或 20 行或其他东西在 .csv 文件中是空白的,然后 Excel 通常似乎不知道如何正确格式化列。

要真正查看 .csv 文件中的内容,您可以在某种文字处理器(例如编码编辑器)中打开它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    相关资源
    最近更新 更多