免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1952 | 回复: 0
打印 上一主题 下一主题

成功利用php将服务器上的txt文本转换为excel文件,并很好地解决中文不能显示问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-09 22:34 |只看该作者 |倒序浏览
成功利用php将服务器上的txt文本转换为excel文件,并很好地解决中文不能显示问题。

一个很小的项目,自动收集学生上传的缴学费银行卡信息,简单得要命,干脆就用在服务器上保持为文本的方式实现,然后在财务人员使用时希望用excel将数据保持到个人电脑商,我收集学生自己录入的银行卡信息后,在服务器上 保持了一个bank.txt文件,里面有中文,有长达18位的数字字段,要通过网页将文本转换为excel(直接让财务人员调用文本有点太简单,都丢人,没有那样做),虽然简单,但却遇到好几个问题,数字太长成为科学计数法的问题,结果超过13位的数据都变成0000了,首字符为0的数据丢0的问题(如学号0911****),还有就是中文编码问题,无法在传给excel时正常显示。但最终都一一解决了,现将代码贴下(已经包含php-excel的classic源码了,以备后用:
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$file = file("$DOCUMENT_ROOT/bank/bank.txt");
$number_of_file = count($file);
if ($number_of_file == 0) {
    echo '没有录入银行卡信息!';
    exit;
}
for ($i = 0; $i
$xls = new Excel_XML('UTF-8', false, 'My bank added Sheet');
$xls->addArray( $doc );
$xls->generateXML('bankadded');
//php excel class source including.
/**
*Project:
http://code.google.com/p/php-excel/
*/
class Excel_XML
{
        private $header = "\n";
        private $footer = "";
        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 .= "" . $v . "\n";
                endforeach;
                $this->lines[] = "\n" . $cells . "\n";
        }
        public function addArray ($array)
        {
                foreach ($array as $k => $v)
                        $this->addRow ($v);
        }
        public function generateXML ($filename = 'excel-export')
        {
                $filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $filename);
     
                header("Content-Type: application/vnd.ms-excel; charset=" . $this->sEncoding);
                header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");
                echo stripslashes (sprintf($this->header, $this->sEncoding));
                echo "\nsWorksheetTitle . "\">\n\n";
                foreach ($this->lines as $line)
                        echo $line;
                echo "\n\n";
                echo $this->footer;
        }
}
?>

附上我自己的源程序和txt文件。

文件:
txe2xls.rar
大小:
1KB
下载:
下载


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/78845/showart_2066651.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP