shuchkin/simplexls

解析和检索旧格式Excel XLS文件中的数据。MS Excel 97工作簿PHP阅读器。

0.10.5 2024-09-17 18:11 UTC

This package is auto-updated.

Last update: 2024-09-17 18:11:55 UTC


README

解析和检索旧Excel .XLS文件中的数据。MS Excel 97-2003工作簿PHP阅读器。PHP BIFF阅读器。无需额外扩展(内部olereader)。
现代 .XLSX php阅读器在这里

嘿,兄弟,请为我的动力★这个包,并捐赠以获得更多动力!

谢尔盖·舒钦 sergey.shuchkin@gmail.com 2016-2024

基本用法

if ( $xls = SimpleXLS::parseFile('book.xls') ) {
	print_r( $xls->rows() );
	// echo $xls->toHTML();	
} else {
	echo SimpleXLS::parseError();
}
Array
(
    [0] => Array
        (
            [0] => ISBN
            [1] => title
            [2] => author
            [3] => publisher
            [4] => ctry
        )

    [1] => Array
        (
            [0] => 618260307
            [1] => The Hobbit
            [2] => J. R. R. Tolkien
            [3] => Houghton Mifflin
            [4] => USA
        )

)

安装

composer require shuchkin/simplexls

或下载类这里

从0.10版本开始支持PHP 7.1+,PHP 8+
0.9.x 支持 PHP 5.3+

基本方法

// open
SimpleXLS::parse( $filename, $is_data = false, $debug = false ): SimpleXLS (or false)
SimpleXLS::parseFile( $filename, $debug = false ): SimpleXLS (or false)
SimpleXLS::parseData( $data, $debug = false ): SimpleXLS (or false)
SimpleXLS:parseError(): string
// simple
$xls->rows($worksheetIndex = 0, $limit = 0): array
$xls->readRows($worksheetIndex = 0, $limit = 0): Generator - helps read huge xlsx
$xls->toHTML($worksheetIndex = 0, $limit = 0): string
// extended
$xls->rowsEx($worksheetIndex = 0, $limit = 0): array, values + meta
// meta
$xls->sheetNames():array
$xls->sheetName($worksheetIndex):string

示例

将XLS转换为HTML表格

echo SimpleXLS::parse('book.xls')->toHTML();

if ( $xls = SimpleXLS::parse('book.xls') ) {
	echo '<table border="1" cellpadding="3" style="border-collapse: collapse">';
	foreach( $xls->rows() as $r ) {
		echo '<tr><td>'.implode('</td><td>', $r ).'</td></tr>';
	}
	echo '</table>';
} else {
	echo SimpleXLS::parseError();
}

工作表名称

if ( $xls = SimpleXLS::parseFile('book.xls') ) {
  print_r( $xls->sheetNames() );
  print_r( $xls->sheetName( $xls->activeSheet ) );
}
Array
(
    [0] => Sheet 1
    [1] => Sheet 2
    [2] => Sheet 3
)
Sheet 2

工作表信息

if ( $xls = SimpleXLS::parseFile('book.xls') ) {
  print_r( $xls->boundsheets ); 
}
Array
(
    [0] => Array
        (
            [name] => Sheet 1
            [offset] => 15870
            [hidden] => 
            [active] => 
        )

    [1] => Array
        (
            [name] => Sheet 2
            [offset] => 16308
            [hidden] => 1
            [active] => 1
        )

    [2] => Array
        (
            [name] => Sheet 3 
            [offset] => 16746
            [hidden] => 
            [active] => 
        )
)

经典OOP风格

$xls = new SimpleXLS('books.xls');
if ($xls->success()) {
	print_r( $xls->rows() );
} else {
	echo 'xls error: '.$xls->error();
}

调试

ini_set('error_reporting', E_ALL );
ini_set('display_errors', 1 );

//header('Content-Type: text/html; charset=utf-8');

$xls = SimpleXLSX::parse('books.xls', false, true );
print_r( $xls->rows() );
print_r( $xls->sheets );

历史

0.10.5 (2024-09-17) readRows()返回生成器,感谢livingroot
0.10.4 (2023-11-13) 更好地兼容PHP 8.1
0.10.3 (2022-10-04) 命名空间示例
0.10.2 (2022-09-01) 修复了百分比值
0.10.1 (2022-04-04) PHP 7.1+,PHP 8.0+
0.9.15 (2021-12-01)
  添加了 $xls->sheetNames()\$xls->sheetName( $index )$xls->activeSheet
  在 $xls->rows( $sheetIndex, $limit = 0 ) 中添加了 $limit
  README中增加了更多示例
0.9.14 (2021-11-04) 检测日期时间格式
0.9.13 (2021-09-21) 修复了工作表名称中的éàù...,在xls->boundsheets信息中添加了标志hidden
0.9.12 (2021-09-20) 修复了éàù...
0.9.11 (2021-09-02) 添加了以标题值作为键的行示例
0.9.10 (2021-05-19) 在示例中将SimpleXLSX转换为SimpleXLS
0.9.9 (2021-03-04) 添加了$xls->toHTML()
0.9.8 (2021-03-04) 修复了跳过第一行和列,修复了unicode中的日期时间格式0.9.7 (2021-02-26) 添加了::parseFile()::parseData()
0.9.6 (2020-12-01) 修复了README
0.9.5 (2020-01-16) 修复了负数值和日期时间值
0.9.4 (2019-03-14) 添加了git Tag以防止composer警告
0.9.3 (2019-02-19) 修复了日期时间检测
0.9.2 (2018-11-15) GitHub发布,composer