Экспорт / Импорт таблиц с другим форматом даты - PullRequest
0 голосов
/ 18 января 2019

У меня возникла такая проблема, что, когда я экспортирую свою таблицу в виде csv-файла и открываю ее в excel: дата, похоже, имеет другой формат (в базе данных: гггг-мм-дд, а в Excel дд / мм / гггг)

Есть ли способ решить эти вещи, чтобы иметь одинаковый формат при экспорте или импорте

Это мой код при импорте

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

} выход;

Необходимо иметь тот же формат

1 Ответ

0 голосов
/ 18 января 2019

Вы коротко написали:

"У меня возникла такая проблема, что когда я экспортирую свою таблицу в виде csv-файла и открываю ее в excel: дата, похоже, имеет другой формат (в базе данных: гггг-мм-дд, а в Excel дд / мм / год) "

Похоже, это просто природа зверя. Помните, что файл .csv не является файлом Excel (в котором могут храниться точные инструкции о том, как все отформатировать). Поэтому, когда Excel открывает файл .csv, он пытается догадаться о том, как форматировать столбцы данных, а иногда это может не соответствовать вашим намерениям.

Подобная вещь пытается показать что-то вроде 2 десятичных знака, где Excel показывает то, что он считает значимым, например, 0,12, 0,13, 0,1, 0. Еще одна похожая странная вещь, которую я видел, это если первые 10 или 20 строк или что-то в файле .csv пустые, а затем Excel часто не понимает, как правильно отформатировать столбец.

Чтобы ДЕЙСТВИТЕЛЬНО точно увидеть, что находится в файле .csv, вы можете открыть его в каком-нибудь текстовом процессоре, таком как редактор кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...