断线的纸鸢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 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译
  • ¥15 STM32F103上电短路问题
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥15 (标签-python|关键词-char)