ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php 实现Excel表格导入导出

2019-07-09 13:08:10  阅读:261  来源: 互联网

标签:csv Excel value rmb header 导入 php data row


导入:

1.将Excel表格转换成csv格式的,比较方便。

2.用getCsv方法将数据导出来,遍历添加

代码仅供参考,getCsv方法可以直接复用

$tmp_file = $_FILES ['file'] ['tmp_name'];

$music_singer     = $this->getCsv($tmp_file);
$new_music_singer = array_values(array_unique($music_singer));

$voiceSingerDtObj  = new VoiceSinger_Dt_Mod();

$failNum   = 0;
$succNum   = 0;
$total     = count($musicArr);
if($new_music_singer)
{
    foreach($new_music_singer as $name)
    {
        $row   = $voiceSingerDtObj->getVoiceSingerByName($name);
        if(empty($row))
        {
            $res   = $voiceSingerDtObj->addVoiceSinger($name, 0);

            if(! $res)
            {
                $failNum ++;
                continue;

            }
            else
            {
                $succNum ++;
            }

        }

    }
}


utilLib::msgSuccRedirect('导入完成,共'.$total.'条,成功'.$succNum.'条,失败'.$failNum.'条');

 

public static function getCsv($csvFileName, $line = 0, $offset = 0)
{


    $handle = fopen($csvFileName, 'r');
    if (!$handle)
    {
        return '文件打开失败';
    }

    $i   = 0;
    $arr = array();
    while ($data = fgetcsv($handle))
    {
        if ($i < $offset && $offset)
        {
            $i++;
            continue;
        }

        //大于读取行数则退出
        if ($i > $line && $line)
        {
            break;
        }
        $i++;
        foreach ($data as $key => &$value)
        {
            $encode = mb_detect_encoding($value, array('ASCII', 'UTF-8', "GB2312", "GBK", 'BIG5'));


            if ($encode != 'UTF-8')
            {
                $value = @iconv($encode, "utf-8//IGNORE", $value);//转化编码
            }


        }
        $arr[] = $data;

    }
    return $arr;
}

 

导出

$csv_header = ['时间', '  充值金额(元)', '发币数'];
$dataArr[]  = $csv_header;

for ($i = $sbtm; $i <= $setm; $i = $i + 86400)
{
    $y           = $i + 86400;
    $data        = $payOrderObj->getSumMoneyByTm($i, $y, 0, $s_ptype);
    $rmb         = isset($data['rmb']) ? ($data['rmb'] + 0) / 100 : 0;
    $coin        = isset($data['coin']) ? $data['coin'] : 0;
    $row['time'] = date("Y-m-d", $i);
    $row['rmb']  = $rmb;
    $row['coin'] = $coin;
    $dataArr[]   = $row;

    $totalRmb  += $rmb;
    $totalCoin += $coin;
}

$csv_tail  = ['总计', $totalRmb, $totalCoin];
$dataArr[] = $csv_tail;
$string    = "";
foreach ($dataArr as $key => $value)
{
    $string .= implode(",", $value) . "\n";
}

header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=充值对账单[{$billdate}].csv");
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
echo chr(0xEF) . chr(0xBB) . chr(0xBF) . $string;
exit();

示例:

标签:csv,Excel,value,rmb,header,导入,php,data,row
来源: https://blog.csdn.net/weixin_42262935/article/details/95181514

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有