php 数据库 写入csv文件格式,【PHP】写入.csv文件注意点

前两天总结了一下把Excel文件导出.csv文件,今天遇到的问题是用PHP汇总数据,写入到.csv格式的数据表文件,结果又遇到一些问题。

主要问题是用EXCEL打开PHP生成的.csv数据表,显示格式不正确,罗列如下:带前导0的文本数据被视为数字而不显示前面的0了,如学号09210110011显示成了9210110011

日期格式数据被自动做了显示处理,如2009-10-17 08:43:40显示成了2009-10-17 8:43

文本数据中的半角逗号(,)被视为字段分隔符导致单元格数据错位

文本数据中带有回车符,被视为数据行分隔符导致数据错误

用文本编辑器打开生成的.cvs文件,数据如下:

学号,姓名,专业,申请理由,申请时间

09210110011,测试,光源,不知道怎么写

难道,这就是理由,2009-10-17 08:43:40

用Excel打开上面的.cvs文件,如下图所示:

2fff94ba88cde74f5f0ebe98189d32d4.png

Excel打开.csv文件(修改前)

以上显然不是我想要的,对于电脑盲来说看着前面不带0的学号估计会觉得莫名奇妙,所以改啊改啊~

处理方法如下:

1、使用 ="数据" 法避免智能解析

上面第一条和第二条情况都是因为Excel自动将识别了数字和日期导致的,方法便是避免Excel避免智能解析这些数据。采用的方法是将 数据 改为 ="数据" 形式,这样Excel便会将数据当做文本处理,而不会识别为数字或日期了。

2、使用 "数据" 法避免错误分割数据

将带换行符和半角逗号的数据用半角双引号括起来,即转换 数据 为 "数据" 形式,这样Excel便不会将数据中的换行符和半角逗号作为数据分割符了,从而避免了第三条和第四条的情况。

以上修改自然是改PHP代码了。

重新生成.csv文件,用文本编辑器打开如下:

学号,姓名,专业,申请理由,申请时间

="09210110011",测试,光源,"不知道怎么写

难道,这就是理由",="2009-10-17 08:43:40"

用Excel打开重新生成的.cvs文件,如下图所示:

028c5d54ca7c080e3847cc080ca6d75d.png

Excel打开.csv文件(修改后)

顺利搞定,over! :-D

日期格式数据被自动做了显示处理,如2009-10-17 08:43:40显示成了2009-10-17 8:43

本博客所有文章如无特别注明均为原创。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下步骤将数据库中的数据写入CSV文件中: 1. 在你的项目中创建一个新的CSV文件。 2. 在你的项目中创建一个新的Java类,并在其中打开数据库连接。 3. 使用查询语句从数据库中选择需要写入CSV文件的数据。 4. 将查询结果转换为CSV格式,将其写入CSV文件。 以下是一个示例代码,可以将数据从数据库中读取并写入CSV文件: ```java import java.io.FileWriter; import java.sql.*; public class DatabaseToCSV { public static void main(String[] args) { String jdbcURL = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; try { Connection connection = DriverManager.getConnection(jdbcURL, username, password); String sql = "SELECT * FROM mytable"; Statement statement = connection.createStatement(); ResultSet result = statement.executeQuery(sql); FileWriter csvWriter = new FileWriter("output.csv"); // Write headers to CSV file csvWriter.append("id, name, email\n"); // Write data to CSV file while (result.next()) { int id = result.getInt("id"); String name = result.getString("name"); String email = result.getString("email"); csvWriter.append(String.format("%d, %s, %s\n", id, name, email)); } csvWriter.flush(); csvWriter.close(); statement.close(); connection.close(); } catch (SQLException e) { System.out.println("Error accessing database."); e.printStackTrace(); } catch (Exception e) { System.out.println("Error writing to CSV file."); e.printStackTrace(); } } } ``` 在上面的代码中,我们使用了Java的JDBC API来连接MySQL数据库,并使用查询语句从数据库中选择需要写入CSV文件的数据。然后,我们将查询结果转换为CSV格式,并将其写入CSV文件中。 请注意,本示例中使用的是MySQL数据库。如果你使用的是其他类型的数据库,请相应地更改连接字符串和查询语句。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值