断线的纸鸢M 2023-06-02 15:40 采纳率: 0%
浏览 2

fgetcsv()读取excel文件内容


$file_path ../excel/excel50000.xlsx';        //文件路径
$handle = fopen( $file_path, 'r' );
 while(( $data = fgetcsv( $handle, 3000, ',' ) ) !== false){
        $data = eval('return '.iconv('gbk','utf-8',var_export($data,true)).';');
        dd($data);
 }

img

使用fgetcsv()读取excel的内容,一直是乱码,使用iconv转码也无效
还请各位能指点一二

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-03 00:15
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答来自chatgpt:

      我可以尝试解决该问题。

      第一步,确认读取文件的编码格式是否正确,如果文件在Windows环境中生成,可能是ANSI编码,需要先将其转换为UTF-8编码。

      示例代码:

      $file = 'test.csv';
      if (file_exists($file)) {
        $data = file_get_contents($file);
        $data = mb_convert_encoding($data, 'UTF-8', 'GBK');
        // 此处将ANSI编码转换为UTF-8编码
        $rows = explode("\n", $data);
        foreach ($rows as $row) {
          $cols = str_getcsv($row);
          // 处理每一行的数据
        }
      }
      

      第二步,将读取到的数据进行转码,这里使用iconv函数进行转码。

      示例代码:

      $file = 'test.csv';
      if (file_exists($file)) {
        $handle = fopen($file, 'r');
        while (!feof($handle)) {
          $row = fgetcsv($handle);
          if (is_array($row)) {
            foreach ($row as $key => $value) {
              $row[$key] = iconv('GBK', 'UTF-8', $value);
            }
            // 处理每一行的数据
            print_r($row);
          }
        }
        fclose($handle);
      }
      

      以上是解决该问题的两种方法,在使用fgetcsv函数读取excel文件时可能会遇到的乱码问题,如果还存在其他问题可以进一步调试或使用其他方法解决。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 6月2日

悬赏问题

  • ¥15 ssh登录页面的问题
  • ¥60 渗透一个指定银行app,拿到客户信息,需要什么级别
  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥15 stm32 串口通讯过程中的问题
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问