首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

php 利用ExcelReader实现EXCEL转换成缓存

作者:  时间: 2011-06-10

如果不清楚ExcelReader的话,请查看 php读取excel类——PHP-ExcelReader


大概的步骤:

1、有个上传文件的php文件

2、有个处理上传文件的php文件

3、一些需要处理的excel 。

第一步:上传的页面文件

效果:

相关代码:

<html>
<body>

<form action="example.php" method="post"
enctype
="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>

第二部  需要的处理文件(完成读取并转换成php数据,最后序列化写入缓存)

相关代码:
<a href = 'test.php' >返回</a>
<?php
// Test CVS
if($_FILES['file']['type'] == 'application/vnd.ms-excel')
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"] . "<br />";
}
}
else{
echo 'Error: ' . 'FILE TYPE IS NOT TXT DOCUMENT!' . "<br />";
}

$tArray = explode('.', $_FILES["file"]["name"]);
$cachedir = 'c:\testWeb\public\phpExcelReader\cache\\';
$cacheFileName = 'c:\testWeb\public\phpExcelReader\cache\\'. $tArray[0].'.txt';

error_reporting(0);
require_once 'Excel/reader.php';

// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();

// Set output Encoding.
$data->setOutputEncoding('CP936');

$data->read('xls\\'. $_FILES["file"]["name"]);
$sheetArray['tbody'] = array();
$sheetArray['thead'] = array();
$tempArray = array();

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
$tempArray = array();
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
if($i == 1){
$sheetArray['thead'][0][]['val'] = $data->sheets[0]['cells'][$i][$j] == '--' ? '-' : $data->sheets[0]['cells'][$i][$j];
}
else{
$tempArray[] = $data->sheets[0]['cells'][$i][$j] == '--' ? '-' : $data->sheets[0]['cells'][$i][$j];
}
}
$i == 1 ? '' : $sheetArray['tbody'][] = $tempArray;
}
var_dump($sheetArray);

if(!is_dir($cachedir))
mkdir($cachedir);
$fp = fopen($cacheFileName, 'w');
if($fp){
echo $cacheFileName . '<br/>';
fwrite($fp, serialize($sheetArray));
fclose($fp);
}
?>
最后在运行文件的cache下就会有缓存文件了