php - 导出/导入不同日期格式的表格
问题描述
我有这个问题,当我将表导出为 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);
} 出口;
需要有相同的格式
解决方案
你简而言之:
“我遇到了这个问题,当我将表导出为 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 文件中的内容,您可以在某种文字处理器(例如编码编辑器)中打开它。
推荐阅读
- ansible - 谁能看到我在 ansible 剧本中做错了什么?
- shader - 你可以在opengl中混合着色器和非着色器代码吗?
- mysql - 创建存储过程以获取 SSMS 中日期维度表中的填充值
- java - org.apache.maven.InternalErrorException:内部错误:java.lang.IllegalArgumentException:MAC 的格式错误 \uxxxx 编码
- c++ - 查找对向量中的所有第一个元素
- node.js - FFMPEG:如何结合视频和图像(视频模板)
- python - 如何运行附加文本文件的while循环?
- asp.net - 登录后未从身份服务器生成 JWT 令牌
- sql - 使用 SQL/Presto/Athena,按 ID 合并记录,保持时间戳列顺序为最新
- c# - 从 Dns.GetHostAddresses 选择 ip 后 TCPClient 未连接