php输出excel php生成excel
来源: 阅读:1299 次 日期:2014-09-10 11:53:00
温馨提示: 小编为您整理了“php输出excel php生成excel”,方便广大网友查阅!

php输出excel,在本站之前采用table的形式,以header代码打开网页为excel进行保存,但是在header方法中生成的excel不是标准的,有的时候不能被微软的excel识别,传送也不好传送。

现在采用<cell>的形式进行输出。类来源于网络,做了部分解释

class Excel_XML

{

private $header = "<?xml version=\"1.0\" encoding=\"%s\"?\>\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\">";

private $footer = "</Workbook>";

private $lines = array();

private $sEncoding;

private $bConvertTypes;

private $sWorksheetTitle;

public function __construct($sEncoding = 'UTF-8', $bConvertTypes = false, $sWorksheetTitle = 'Table1')

{

$this->bConvertTypes = $bConvertTypes;

$this->setEncoding($sEncoding);

$this->setWorksheetTitle($sWorksheetTitle);

}

public function setEncoding($sEncoding)

{

$this->sEncoding = $sEncoding;

}

public function setWorksheetTitle ($title)

{

// $title = preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/", "", $title);//如果有特殊字符则表示替换

$title = substr ($title, 0, 31);

$this->sWorksheetTitle = $title;

}

private function addRow ($array)

{

$cells = "";

foreach ($array as $k => $v):

$type = 'String';

if ($this->bConvertTypes === true && is_numeric($v)):

$type = ‘Number’;

endif;

$v = htmlentities($v, ENT_COMPAT, $this->sEncoding);

$cells .= "<Cell><Data ss:Type=\"$type\">" . $v . "</Data></Cell>\n";

endforeach;

$this->lines[] = "<Row>\n" . $cells . "</Row>\n";

}

public function addArray ($array)

{

foreach ($array as $k => $v)

$this->addRow ($v);

}

public function generateXML ($filename = 'excel-export')

{

// correct/validate filename

// $filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $filename);//这里用来替换了非字母数字为空

// deliver header (as recommended in php manual)

header("Content-Type: application/vnd.ms-excel; charset=" . $this->sEncoding);

header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");

// print out document to the browser

// need to use stripslashes for the damn ">"

echo stripslashes (sprintf($this->header, $this->sEncoding));

echo "\n<Worksheet ss:Name=\"" . $this->sWorksheetTitle . "\">\n<Table>\n";

foreach ($this->lines as $line)

echo $line;

echo "</Table>\n</Worksheet>\n";

echo $this->footer;

}

}

生成代码:

include("excelclass.php");

$data = array(

array ('空格','','空格测试'),//第一行数据

array('Schwarz', '中文测试'),//第二行数据

array('√', '特殊字符测试')

);

$xls = new Excel_XML('UTF-8', false, 'php输出Excel第一个sheet的名称');

$xls->addArray($data);

$xls->generateXML('php生成Excel的名称');

运行试试,应该没有错,我已经做过测试

更多信息请查看IT技术专栏

更多信息请查看网络编程
手机网站地址:php输出excel php生成excel
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map