浏览代码

Excel Reader

euromark 13 年之前
父节点
当前提交
4c13cf3d5c

+ 16 - 0
Lib/ExcelReaderLib.php

@@ -0,0 +1,16 @@
+<?php
+App::import('Vendor', 'Tools.SpreadsheetExcelReader', array('file' => 'SpreadsheetExcelReader' . DS . 'SpreadsheetExcelReader.php'));
+if (!class_exists('SpreadsheetExcelReader')) {
+	throw new CakeException('Cannot load SpreadsheetExcelReader class');
+}
+
+/**
+ * Wrapper of the old excel reader for cake
+ *
+ * @author Mark Scherer
+ * @license MIT
+ * 2013-01-24 ms
+ */
+class ExcelReaderLib extends SpreadsheetExcelReader {
+
+}

+ 78 - 0
Test/Case/Lib/ExcelReaderLibTest.php

@@ -0,0 +1,78 @@
+<?php
+App::uses('MyCakeTestCase', 'Tools.TestSuite');
+App::uses('ExcelReaderLib', 'Tools.Lib');
+
+/**
+ * testing basic functions
+ * 2011-05-09 ms
+ */
+class ExcelReaderLibTest extends MyCakeTestCase {
+
+	public $ExcelReader;
+
+	public function setUp() {
+		parent::setUp();
+
+		$this->ExcelReader = new ExcelReaderLib();
+	}
+
+	/**
+	 * Read binary data directly
+	 */
+	public function readFromBlob() {
+		$path = CakePlugin::path('Tools') . 'Test' . DS . 'test_files' . DS . 'xls' . DS;
+		$file = $path . 'excel_2000.xls';
+		$content = file_get_contents($file);
+
+		$this->ExcelReader->readFromBlob($content);
+		$sheets = $this->ExcelReader->sheets();
+		$this->assertSame(3, $sheets);
+
+		$array = $this->ExcelReader->dumpToArray();
+		$expected = array(
+			array('A', 'B', 'C'),
+			array('titleA', 'titleB', 'titleC'),
+		);
+		$this->assertSame($expected, $array);
+	}
+
+	/**
+	 * Currently the ExcelReader only works with Excel97/2000/XP etc
+	 * Not with any versions prio to that
+	 */
+	public function testRead() {
+		$path = CakePlugin::path('Tools') . 'Test' . DS . 'test_files' . DS . 'xls' . DS;
+		$file = $path . 'excel_2000.xls';
+
+		$this->ExcelReader->read($file);
+
+		$sheets = $this->ExcelReader->sheets();
+		$this->assertSame(3, $sheets);
+
+		$array = $this->ExcelReader->dumpToArray();
+		$expected = array(
+			array('A', 'B', 'C'),
+			array('titleA', 'titleB', 'titleC'),
+		);
+		$this->assertSame($expected, $array);
+
+		$array = $this->ExcelReader->dumpToArray(1);
+		debug($array);
+		$expected = array(
+			array('A1', '0'),
+			array('A2', '1'),
+			array('A3', '2'),
+			array('A4', '3'),
+		);
+		$this->assertSame($expected, $array);
+
+		$array = $this->ExcelReader->dumpToArray(2);
+		$expected = array(
+		);
+		$this->assertSame($expected, $array);
+
+		$file = $path . 'excel_1995.xls';
+		//TODO
+	}
+
+}

二进制
Test/test_files/xls/excel_1995.xls


二进制
Test/test_files/xls/excel_2000.xls


文件差异内容过多而无法显示
+ 1736 - 0
Vendor/SpreadsheetExcelReader/SpreadsheetExcelReader.php