php读取excel的类,越简单越好,只读取数据就行。网上找了几个使用起来很费劲。
不知道你是否考虑csv格式,读取时比较简单,
$handle = fopen ($_FILES['csvFile']['tmp_name'],"r");$parameter = array();$i=0;while ($data = fgetcsv($handle,1000,',')){if(empty($data[0]) || empty($data[1]) || empty($data[2])) continue;$parameter['items'][$i]['userId'] = $data[0];$parameter['items'][$i]['itemId'] = $data[1];$parameter['items'][$i]['num'] = $data[2];$i++;}}
我以前用的是phpExcelReder,我感觉这个很好用啊,而且使用起来了简单。
$xl_reader= new Spreadsheet_Excel_Reader ( );$xl_reader->read("excel_test.xls");
http://sourceforge.net/projects/phpexcelreader/
可以使用PhpExcel,下面有一个读的例子,可参考一下。
$ExcleData = commonPhpExcel::readExcel($fileName[1]);if(is_array($ExcleData[0]['cells']) && count($ExcleData[0]['cells'])>1){for ($i=2;$i<=count($ExcleData[0]['cells']);$i++){$RestArr[$j] = $ExcleData[0]['cells'][$i];$j++;}}
先下载:http://www.xiumu.org/blog-uploads/2012/02/phpExcelReader.zip
// 测试文档require_once 'Excel/reader.php';
// Excel文件($filename, $encoding);$data = new Spreadsheet_Excel_Reader();
// 设置输入编码 UTF-8/GB2312/CP936等等$data->setOutputEncoding('UTF-8');
/**** 如果服务器不支持 iconv 添加下面的代码使用 mb_convert_encoding 编码* $data->setUTFEncoder('mb');***/
/**** 默认情况下行和列的技术从1开始* 如果要修改起始数值,添加:* $data->setRowColOffset(0);***/
/**** 设置工作模式* $data->setDefaultFormat('%.2f');* setDefaultFormat - 最大兼容模式** $data->setColumnFormat(4, '%.3f');* setColumnFormat - 列的格式设置(仅适用于数字字段)***/
$data->read('jxlrwtest.xls');
/*
$data->sheets[0]['numRows'] - 行数$data->sheets[0]['numCols'] - 列数$data->sheets[0]['cells'][$i][$j] - 行$i 列$j里的数据
$data->sheets[0]['cellsInfo'][$i][$j] - 文件的拓展信息
$data->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" | "number" | "unknown"当type为unknown时使用raw值,因为元素中包含'0.00'的格式。$data->sheets[0]['cellsInfo'][$i][$j]['raw'] = 未被格式化的值$data->sheets[0]['cellsInfo'][$i][$j]['colspan']$data->sheets[0]['cellsInfo'][$i][$j]['rowspan']*/
error_reporting(E_ALL ^ E_NOTICE);
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);
来自:http://www.xiumu.org/technology/php-import-read-excel-class-phpexcelreader.shtml
我前几天刚好也用到了PHP读取Excel我用的是phpexcel最新的版本。下面是代码
require_once './PHPExcel/PHPExcel.php';$_ReadExcel = new PHPExcel_Reader_Excel2007();//为了可以读取所有版本Excel文件if(!$_ReadExcel->canRead(PATH.'/'.$_data['path'])) $_ReadExcel = new PHPExcel_Reader_Excel5();
//不需要读取整个Excel文件而获取所有工作表数组的函数,感觉这个函数很有用,找了半天才找到// $_sheetNames = $_ReadExcel->listWorksheetNames(PATH.'/'.$_data['path']);
//读取Excel文件$_phpExcel = $_ReadExcel->load(PATH.'/'.$_data['path']);//获取工作表的数目$_sheetCount = $_phpExcel->getSheetCount();
$_newExcel = array();$_excelData = array();
//循环工作表for($_s = 0;$_s<$_sheetCount;$_s++) {//选择工作表$_currentSheet = $_phpExcel->getSheet($_s);//取得一共有多少列$_allColumn = $_currentSheet->getHighestColumn();//取得一共有多少行$_allRow = $_currentSheet->getHighestRow();for($_r = 2;$_r<=$_allRow;$_r++){
for($_currentColumn='A';$_currentColumn<=$_allColumn;$_currentColumn++){$address = $_currentColumn.$_r;$_newExcel[] = $_currentSheet->getCell($address)->getValue();}// 内部判断未详细$_excelData['customer_name'] = $_newExcel[0];//客户姓名$_excelData['customer_tel'] = $_newExcel[1];//客户手机$_excelData['staff_id'] = $_data['staff_id'];//员工表id,先默认为0 -》发展人$_excelData['tpl_id'] = $_data['tpl_id'];//模板id$_excelData['activity_id'] = $_data['activity_id'];//模板id$_excelData['mark'] = 1;//发送标记1为未发送的短信$_excelData['status'] = 2;//是否完成认证2未完成$_excelData['send_id'] = $_SESSION[C('USER_AUTH_KEY')]['id'];//短信发送人$_excelData['posttime'] = time();// 清空表数组$_newExcel = array();// // 写入数据库$_status = $this->table(C('DB_PREFIX').'records')->data($_excelData)->add();$_start++;if ($_start === 1) $startId = $_status;// 错误返回错误信息if (!$_status) return Tool::_return_check(false,'Excel文件写入数据库失败,错误姓名'.$_excelData['customer_name'].',请检查!!!');}unset($_currentSheet);}
你要是没有最新的,email我,我可以发给你
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(5)
不知道你是否考虑csv格式,读取时比较简单,
$handle = fopen ($_FILES['csvFile']['tmp_name'],"r");
$parameter = array();
$i=0;
while ($data = fgetcsv($handle,1000,',')){
if(empty($data[0]) || empty($data[1]) || empty($data[2])) continue;
$parameter['items'][$i]['userId'] = $data[0];
$parameter['items'][$i]['itemId'] = $data[1];
$parameter['items'][$i]['num'] = $data[2];
$i++;
}
}
我以前用的是phpExcelReder,我感觉这个很好用啊,而且使用起来了简单。
$xl_reader= new Spreadsheet_Excel_Reader ( );
$xl_reader->read("excel_test.xls");
http://sourceforge.net/projects/phpexcelreader/
可以使用PhpExcel,下面有一个读的例子,可参考一下。
$ExcleData = commonPhpExcel::readExcel($fileName[1]);
if(is_array($ExcleData[0]['cells']) && count($ExcleData[0]['cells'])>1){
for ($i=2;$i<=count($ExcleData[0]['cells']);$i++){
$RestArr[$j] = $ExcleData[0]['cells'][$i];
$j++;
}
}
先下载:http://www.xiumu.org/blog-uploads/2012/02/phpExcelReader.zip
// 测试文档
require_once 'Excel/reader.php';
// Excel文件($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();
// 设置输入编码 UTF-8/GB2312/CP936等等
$data->setOutputEncoding('UTF-8');
/***
* 如果服务器不支持 iconv 添加下面的代码使用 mb_convert_encoding 编码
* $data->setUTFEncoder('mb');
*
**/
/***
* 默认情况下行和列的技术从1开始
* 如果要修改起始数值,添加:
* $data->setRowColOffset(0);
*
**/
/***
* 设置工作模式
* $data->setDefaultFormat('%.2f');
* setDefaultFormat - 最大兼容模式
*
* $data->setColumnFormat(4, '%.3f');
* setColumnFormat - 列的格式设置(仅适用于数字字段)
*
**/
$data->read('jxlrwtest.xls');
/*
$data->sheets[0]['numRows'] - 行数
$data->sheets[0]['numCols'] - 列数
$data->sheets[0]['cells'][$i][$j] - 行$i 列$j里的数据
$data->sheets[0]['cellsInfo'][$i][$j] - 文件的拓展信息
$data->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" | "number" | "unknown"
当type为unknown时使用raw值,因为元素中包含'0.00'的格式。
$data->sheets[0]['cellsInfo'][$i][$j]['raw'] = 未被格式化的值
$data->sheets[0]['cellsInfo'][$i][$j]['colspan']
$data->sheets[0]['cellsInfo'][$i][$j]['rowspan']
*/
error_reporting(E_ALL ^ E_NOTICE);
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);
来自:http://www.xiumu.org/technology/php-import-read-excel-class-phpexcelreader.shtml
我前几天刚好也用到了PHP读取Excel我用的是phpexcel最新的版本。
下面是代码
require_once './PHPExcel/PHPExcel.php';
$_ReadExcel = new PHPExcel_Reader_Excel2007();
//为了可以读取所有版本Excel文件
if(!$_ReadExcel->canRead(PATH.'/'.$_data['path'])) $_ReadExcel = new PHPExcel_Reader_Excel5();
//不需要读取整个Excel文件而获取所有工作表数组的函数,感觉这个函数很有用,找了半天才找到
// $_sheetNames = $_ReadExcel->listWorksheetNames(PATH.'/'.$_data['path']);
//读取Excel文件
$_phpExcel = $_ReadExcel->load(PATH.'/'.$_data['path']);
//获取工作表的数目
$_sheetCount = $_phpExcel->getSheetCount();
$_newExcel = array();
$_excelData = array();
//循环工作表
for($_s = 0;$_s<$_sheetCount;$_s++) {
//选择工作表
$_currentSheet = $_phpExcel->getSheet($_s);
//取得一共有多少列
$_allColumn = $_currentSheet->getHighestColumn();
//取得一共有多少行
$_allRow = $_currentSheet->getHighestRow();
for($_r = 2;$_r<=$_allRow;$_r++){
for($_currentColumn='A';$_currentColumn<=$_allColumn;$_currentColumn++){
$address = $_currentColumn.$_r;
$_newExcel[] = $_currentSheet->getCell($address)->getValue();
}
// 内部判断未详细
$_excelData['customer_name'] = $_newExcel[0];//客户姓名
$_excelData['customer_tel'] = $_newExcel[1];//客户手机
$_excelData['staff_id'] = $_data['staff_id'];//员工表id,先默认为0 -》发展人
$_excelData['tpl_id'] = $_data['tpl_id'];//模板id
$_excelData['activity_id'] = $_data['activity_id'];//模板id
$_excelData['mark'] = 1;//发送标记1为未发送的短信
$_excelData['status'] = 2;//是否完成认证2未完成
$_excelData['send_id'] = $_SESSION[C('USER_AUTH_KEY')]['id'];//短信发送人
$_excelData['posttime'] = time();
// 清空表数组
$_newExcel = array();
// // 写入数据库
$_status = $this->table(C('DB_PREFIX').'records')->data($_excelData)->add();
$_start++;
if ($_start === 1) $startId = $_status;
// 错误返回错误信息
if (!$_status) return Tool::_return_check(false,'Excel文件写入数据库失败,错误姓名'.$_excelData['customer_name'].',请检查!!!');
}
unset($_currentSheet);
}
你要是没有最新的,email我,我可以发给你