PHP读取/保存excel表

读取excel

<?php
header ( "Content-Type:text/html;charset=utf-8" );
require_once 'excel_reader2.php';
// 创建对象
$data = new Spreadsheet_Excel_Reader ();
// 设置文本输出编码
$data->setOutputEncoding ( 'UTF-8' );
// 读取Excel文件
$data->read ( "e.xls" );
// $data->sheets[0]['numRows']为Excel行数
for($i = 1; $i <= $data->sheets [0] ['numRows']; $i ++) {
	// $data->sheets[0]['numCols']为Excel列数
	for($j = 1; $j <= $data->sheets [0] ['numCols']; $j ++) {
		// 显示每个单元格内容
		// echo $data->sheets[0]['cells'][$i][$j].' ';
		$arr [$i] ['id'] = $data->sheets [0] ['cells'] [$i] [1];
		// $arr[$i]['idcard']=$data->sheets[0]['cells'][$i][2];
		$arr[$i]['stuno']=$data->sheets[0]['cells'][$i][3];
		// $arr [$i] ['name'] = $data->sheets [0] ['cells'] [$i] [4];
		$arr [$i] ['dept'] = $data->sheets [0] ['cells'] [$i] [5];
		$arr [$i] ['major'] = $data->sheets [0] ['cells'] [$i] [6];
		$arr [$i] ['class'] = $data->sheets [0] ['cells'] [$i] [7];
	}
	/*
	 * exit(); echo '<br>';
	 */
}
print_r ( $arr );
?>

PHP5.3以上运行会报错

Deprecated: Assigning the return value of new by reference is deprecated in E:\WWW\excel_reader2.php on line 916

第79行、844行split改为explode

乱码解决:

将第635行改为:

$val = htmlspecialchars($val);

example.php改为:

$data = new Spreadsheet_Excel_Reader("2015.xls",true,"UTF-8");

解决方案:将916行

$this->_ole =& new OLERead();

   改为

$this->_ole = new OLERead();

保存为Excel:

<?php
header ( "content-type:text/html;charset=utf-8" );
/**
 * Error reporting
 */
error_reporting ( E_ALL );
/**
 * PHPExcel
 */
include_once './Classes/PHPExcel.php';

/**
 * PHPExcel_Writer_Excel2003用于创建xls文件
 */
include_once './Classes/PHPExcel/Writer/Excel5.php';

// Create new PHPExcel object
$objPHPExcel = new PHPExcel ();

// Set properties
$objPHPExcel->getProperties ()->setCreator ( "RT" );
$objPHPExcel->getProperties ()->setLastModifiedBy ( "RT" );
$objPHPExcel->getProperties ()->setTitle ( "Office 2007 XLSX Test Document" );
$objPHPExcel->getProperties ()->setSubject ( "Office 2007 XLSX Test Document" );
$objPHPExcel->getProperties ()->setDescription ( "Test document for Office 2007 XLSX, generated using PHP classes." );

// Add some data
$objPHPExcel->setActiveSheetIndex ( 0 );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'A1', 'Date' );
// 合并单元格:
$objPHPExcel->getActiveSheet ()->mergeCells ( 'B1:F1' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'B1', 'CSAT Score' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'G1', 'Grand Total' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'H1', 'CSAT' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'A2', '08/01/11' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'B2', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'C2', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'D2', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'E2', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'F2', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'G2', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'H2', '0%' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'A3', '08/01/11' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'B3', '武汉' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'C3', '湖北' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'D3', '洪湖' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'E3', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'F3', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'G3', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'H3', '0%' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'A4', '08/01/11' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'B4', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'C4', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'D4', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'E4', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'F4', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'G4', '0' );
$objPHPExcel->getActiveSheet ()->SetCellValue ( 'H4', '0%' );

// Rename sheet
// $objPHPExcel->getActiveSheet()->setTitle('Csat');

// Save Excel 2007 file
// $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$d = date ( 'Y-m-d' );
$objWriter = new PHPExcel_Writer_Excel5 ( $objPHPExcel );
$objWriter->save ( str_replace ( '.php', '.xls', __FILE__ ) );
header ( "Pragma: public" );
header ( "Expires: 0" );
header ( "Cache-Control:must-revalidate,post-check=0,pre-check=0" );
header ( "Content-Type:application/force-download" );
header ( "Content-Type:application/vnd.ms-execl" );
header ( "Content-Type:application/octet-stream" );
header ( "Content-Type:application/download" );
header ( "Content-Disposition:attachment;filename=" . $d . ".xls" );
header ( "Content-Transfer-Encoding:binary" );
$objWriter->save ( "php://output" );
?>



<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2015/1/9
 * Time: 15:30
 */
require_once './Classes/PHPExcel.php';
/**对excel里的日期进行格式转化*/
function GetData($val)
{
    $jd = GregorianToJD(1, 1, 1970);
    $gregorian = JDToGregorian($jd + intval($val) - 25569);
    return $gregorian;
    /**显示格式为 “月/日/年” */
}
$filePath = 'test.xls';
$PHPExcel = new PHPExcel();
/**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/
$PHPReader = new PHPExcel_Reader_Excel2007();
if (!$PHPReader->canRead($filePath)) {
    $PHPReader = new PHPExcel_Reader_Excel5();
    if (!$PHPReader->canRead($filePath)) {
        echo 'no Excel';
        return;
    }
}
$PHPExcel = $PHPReader->load($filePath);
/**读取excel文件中的第一个工作表*/
$currentSheet = $PHPExcel->getSheet(0);
/**取得最大的列号*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();


echo $currentSheet->getCellByColumnAndRow('B', 1)->getValue();
return;
//$PHPExcel->getActiveSheet()->mergeCells('B6:C6'); //合并单元格
$PHPExcel->getActiveSheet()->setCellValue('C7','更改后的值');
$PHPExcel->getProperties()->setCreator("xuhua");

/**从第二行开始输出,因为excel表中第一行为列名*/
for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
    /**从第A列开始输出*/
    for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {
        $val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65, $currentRow)->getValue();
        /**ord()将字符转为十进制数*/
        if ($currentColumn == 'A') {
            echo $val . "\t";
        } else {
//echo $val;
            /**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将gb2312编码转为utf-8编码输出*/
            echo $val . "\t";
        }
    }
    echo "<hr>";
}
?>


你可能感兴趣的:(PHP读取/保存excel表)