php wps 读取word内容,PHP-如何使用PHP解析WPS格式的Excel文档

这篇博客介绍了如何解决使用PHP读取Excel文件时遇到的时间计算错误和中文编码问题。作者提供了修改代码的步骤,包括更改require_once语句、设置输出编码和修改读取函数,以正确处理日期并确保中文正常显示。此外,还提供了一个用于将Excel时间转换为PHP时间的辅助函数。最后,展示了如何将数据写入TXT文件的示例。
摘要由CSDN通过智能技术生成

很久以前写的代码:

从xls文件格式读取。但是发现读取时间的时候,总是不对。

原来excel里面时间是从1900-1-1开始以天计算,比如1900-1-1是1,1970-1-125569,2011-06-01是40695.

使用spreadsheet_excel_reader excel类读取excel的内容

reader.php 中的下面这行要修改

将 require_once 'Spreadsheet/Excel/Reader/OLERead.php';

改为 require_once 'oleread.inc';

example.php 中

修改 $data->setOutputEncoding('CP1251');

为 $data->setOutputEncoding('CP936');

修改 nl2br(htmlentities($data->sheets[$sheet]['cells'][$row][$col]));

为 $table_output[$sheet] .= nl2br(htmlspecialchars($data->sheets[$sheet]['cells'][$row][$col]));

不然中文会有问题。

繁体的话可以修改为CP950、日文是CP932,具体可参考codepage说明。

修改 $data->read('jxlrwtest.xls') 为自己的 excel 文件名,zip 档中附的 jxlrwtest.xls 应该是坏了。

这是下载地址:

phpExcelReader:http://sourceforge.net/projects/phpexcelreader/

PHPExcel:http://www.codeplex.com/PHPExcel/Wiki/View.aspx?title=Documents&referringTitle=Home

代码如下

// Test CVS

error_reporting(E_ALL);

//echo "1";

include_once('//Excel/reader.php');

// ExcelFile($filename, $encoding);

$data = new Spreadsheet_Excel_Reader();

// Set output Encoding.

//$data->setOutputEncoding('CP1251');

$data->setOutputEncoding('CP936');

/***

* if you want you can change 'iconv' to mb_convert_encoding:

* $data->setUTFEncoder('mb');

*

**/

/***

* By default rows & cols indeces start with 1

* For change initial index use:

* $data->setRowColOffset(0);

*

**/

/***

* Some function for formatting output.

* $data->setDefaultFormat('%.2f');

* setDefaultFormat - set format for columns with unknown formatting

*

* $data->setColumnFormat(4, '%.3f');

* setColumnFormat - set format for column (apply only to number fields)

*

**/

$data->read('1.xls');

//print_r($data->boundsheets);

//exit;

/*

print exceltimtetophp($data->sheets[0]['cells'][1][1]);

print $data->sheets[0]['cells'][1][3];

exit;

*/

/*

$data->sheets[0]['numRows'] - count rows

$data->sheets[0]['numCols'] - count columns

$data->sheets[0]['cells'][$i][$j] - data from $i-row $j-column

$data->sheets[0]['cellsInfo'][$i][$j] - extended info about cell

$data->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" | "number" | "unknown"

if 'type' == "unknown" - use 'raw' value, because cell contain value with format '0.00';

$data->sheets[0]['cellsInfo'][$i][$j]['raw'] = value if cell without format

$data->sheets[0]['cellsInfo'][$i][$j]['colspan']

$data->sheets[0]['cellsInfo'][$i][$j]['rowspan']

*/

error_reporting(E_ALL ^ E_NOTICE);

$count=count($data->boundsheets);

$sheetitem = $data->boundsheets;

for ($k=0;$k

if ($k == 0){

$category = 1;

$handle=fopen("/home/zhukai/sql/{$category}.txt","a+");

}else if ($k == 1){

$category = 2;

$handle=fopen("/home/zhukai/sql/{$category}.txt","a+");

}else{

$category = 0;

}

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {

$dateline = strtotime(exceltimtetophp($data->sheets[$k]['cells'][$i][1]));

$content = addslashes(strreplace($data->sheets[$k]['cells'][$i][2]));

$note = addslashes(strreplace($data->sheets[$k]['cells'][$i][3]));

//echo """.$data->sheets[0]['cells'][$i][$j]."",";

if ($category != 0 && $content && $note){

$string="INSERT INTO test(category,content,note,datetline) values ('{$category}','{$content}','{$note}','{$dateline}');rn";

fwrite($handle,$string);

}

fclose($handle);

}

}

/*for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {

for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {

echo """.$data->sheets[0]['cells'][$i][$j]."",";

}

echo "n";

}*/

//print_r($data);

//print_r($data->formatRecords);*/

function exceltimtetophp($days,$time=false)

{

if(is_numeric($days))

{

$jd = GregorianToJD(1, 1, 1970);

$gregorian = JDToGregorian($jd+intval($days)-25569);

$myDate = explode('/',$gregorian);

$myDateStr= str_pad($myDate[2],4,'0', STR_PAD_LEFT)."-".str_pad($myDate[0],2,'0',STR_PAD_LEFT)."-".str_pad($myDate[1],2,'0', STR_PAD_LEFT).($time?"00:00:00":'');

return $myDateStr;

}

return $time;

}

function strreplace($str){

$foundarr=array("'",",");

$replacearr=array("‘",",");

return str_replace($foundarr,$replacearr,$str);

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Wpsshop商城系统 - 团队十年电商经验汇集巨献! 1、非授权用户严禁去除Wpsshop相关的版权信息。 2、请尊重Wpsshop开发人员劳动成果,严禁使用本系统转卖、销售或二次开发后转卖、销售等商业行为! 3、请关注Wpsshop官方网址了解产品最新咨询、功能升级、BUG修复。 Wpsshop官方网址: http://www.wpsshop.cn Wpsshop安装环境: 1、PHP5.4版本以上,支持PHP7.0 2、支持rewrite伪静态规则 3、支持php扩展:php_curl,php_gd2,(如果配置邮箱需要添加php_openssl,php_sockets) 4、设置upload权限,因为系统上传相片生成二维码等需要上传的这个文件夹,需要设置这个文件夹以及子项文件夹777权限 5、 安装完成以后删除install.php Wpsshop安装步骤: 1、将源码解压到服务器空间 2、访问你的网址进行安装, 正常会跳转到 http://域名/install.php 3、按照系统提示进行安装 4、进入后台 后台地址:http://域名/index.php?s=/admin 5、进入前台 前台地址:http://域名/index.php 6、系统伪静态配置: 1. 配置伪静态环境 apache,iis,nginx配置环境不同 2. 系统修改伪静态配置: ./application/config.php下面修改配置: define("REWRITE_MODEL", true); 配置伪静态设置为true 默认false 伪静态环境配置: [ Apache ] 1. httpd.conf配置文件中加载了mod_rewrite.so模块 2. AllowOverride None 将None改为 All [ IIS ] 如果你的服务器环境支持ISAPI_Rewrite的话,可以配置httpd.ini文件,添加下面的内容: RewriteRule (.*)$ /index\.php\?s=$1 [I] 在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点: [nginx] 在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf中配置转发规则实现: location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值