网上有很多php操作excel或其他文件的类库,也做的很完善。比如无比风骚的PHPExcel,官方网站: ,pear的Spreadsheet_Excel_Writer类等。然而我们只是用到其中一部分功能,这就会让程序显的有些臃肿。在你调用这些类库的时候,不管你是多简单的操作,他都会消耗巨大的内存,这对我们来说是很不可取的。
比如我需要一个做php导出 excel的的程序,只需要把相关的数据导出到excel表就可以了,这么简单的操作就不需要用那些类库什么的了。直接用header的方式就可以了:header("Content-type:application/vnd.ms-excel");
在导出后会发现一个问题,如果数据是数字会出现一些意想不到的情况。比如,"012345",在excel中会变成"12345";如果输入身份证号码这样的长数字,在excel中会用科学计数法表示出来,并且最后的四位数字会出现偏差,变位0000等情况。这就需要把单元格设置为文本格式,方法是
echo "=\"330181199006061234\""
如果程序是utf-8编码的,还需要用iconv函数去转码,不然是会乱码的,乱码的。
iconv("UTF-8", "GB2312", $yourstr);
如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312:
$yourStr = mb_convert_encoding(”gb2312″, “UTF-8″, $yourStr);
另word格式导入类似,,指定header就可以了:
header("Content-Type: application/msword"); header("Content-Disposition: attachment; filename=doc.doc");
php代码:
$v) { $title[$k]=iconv("UTF-8", "GB2312",$v); } $title= implode("\t", $title); echo "$title\n"; } if (!empty($data)) { foreach($data as $key=>$val) { foreach ($val as $ck => $cv) { $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv); } $data[$key]=implode("\t", $data[$key]); } echo implode("\n",$data); } } $total = array();$fp = fopen('card.txt', 'r');$i = 0;while ($v = fgets($fp, 100)) { $arr = explode(",", trim($v)); $total[$i]["cid"] = "=\"".$arr[0]."\""; $total[$i]["code"] = "=\"".$arr[1]."\""; $total[$i]["ctime"] = '2014-09-10 14:06:29'; $total[$i]["expireday"] = '2015-12-31 23:59:59'; $i++;}exportExcel($total, array('卡','生成码','开始时间','有效时间'), 'card');exit;
card.txt文件:
900010061112,22279892213248,2013-06-30900010061113,52139844827982,2013-06-30900010061114,67313895480603,2013-06-30900010061115,66178571957378,2013-06-30900010061116,78951625651967,2013-06-30900010061117,73835952566949,2013-06-30900010061118,74436659365440,2013-06-30