yzycoder
<?php
/**
 * 生成excel文件操作
 *
 * @author wesley wu
 * @date 2013.12.9
 */
class Excel
{
     
    private $limit = 10000;
     
    public function download($data, $fileName)
    {
        $fileName = $this->_charset($fileName);
        header("Content-Type: application/vnd.ms-excel; charset=gbk");
        header("Content-Disposition: inline; filename=\"" . $fileName . ".xls\"");
        echo "<?xml version=\"1.0\" encoding=\"gbk\"?>\n
            <Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"
            xmlns:x=\"urn:schemas-microsoft-com:office:excel\"
            xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"
            xmlns:html=\"http://www.w3.org/TR/REC-html40\">";
        echo "\n<Worksheet ss:Name=\"" . $fileName . "\">\n<Table>\n";
        $guard = 0;
        foreach($data as $v)
        {
            $guard++;
            if($guard==$this->limit)
            {
                ob_flush();
                flush();
                $guard = 0;
            }
            echo $this->_addRow($this->_charset($v));
        }
        echo "</Table>\n</Worksheet>\n</Workbook>";
    }
     
    private function _addRow($row)
    {
        $cells = "";
        foreach ($row as $k => $v)
        {
            $cells .= "<Cell><Data ss:Type=\"String\">" . $v . "</Data></Cell>\n";
        }
        return "<Row>\n" . $cells . "</Row>\n";
    }
     
    private function _charset($data)
    {
        if(!$data)
        {
            return false;
        }
        if(is_array($data))
        {
            foreach($data as $k=>$v)
            {
                $data[$k] = $this->_charset($v);
            }
            return $data;
        }
        return iconv(\'utf-8\', \'gbk\', $data);
    }
     
}

//使用方法

$excel = new Excel();

$data = array(
    array(\'姓名\',\'标题\',\'文章\',\'价格\',\'数据5\',\'数据6\',\'数据7\'),
    array(\'数据1\',\'数据2\',\'数据3\',\'数据4\',\'数据5\',\'数据6\',\'数据7\'),
    array(\'数据1\',\'数据2\',\'数据3\',\'数据4\',\'数据5\',\'数据6\',\'数据7\'),
    array(\'数据1\',\'数据2\',\'数据3\',\'数据4\',\'数据5\',\'数据6\',\'数据7\'),
    array(\'数据1\',\'数据2\',\'数据3\',\'数据4\',\'数据5\',\'数据6\',\'数据7\'),
    array(\'数据1\',\'数据2\',\'数据3\',\'数据4\',\'数据5\',\'数据6\',\'数据7\')
);

$excel->download($data, \'这是一个测试\');

?>

分类:

技术点:

相关文章:

  • 2021-09-10
  • 2021-08-27
  • 2021-12-05
  • 2022-12-23
  • 2021-09-25
  • 2022-01-09
  • 2021-06-02
  • 2021-04-30
猜你喜欢
  • 2022-12-23
  • 2021-08-15
  • 2022-12-23
  • 2021-08-28
  • 2021-05-07
  • 2022-12-23
  • 2018-03-28
相关资源
相似解决方案