Excelファイル(Office 2003)を読み取ろうとしています。アップロードしてその内容を解析する必要があるExcelファイルがあります。
Googleを介して、Excelファイルの生成、Excel XMLファイルの読み取り、Excel CSVファイルの読み取り、または放棄されたプロジェクトの完了など、関連する(および不十分なトピック)に対する答えしか見つけることができません。私はOffice 2003を所有しているため、そこからファイルが必要な場合は利用できます。ボックスにインストールされていますが、共有ホストにはインストールできず、インストールできません。
編集: これまでのところ、すべての回答は PHP-ExcelReader および/または この追加記事 を使用方法について指摘しています。
PHP-ExcelReader を使用してxlsファイルを読み取ります。
私の知る限り、2つの選択肢があります。
PHPExcelは、Office 2003形式のSpreadsheet_Excel_Readerを使用します。
更新:一部のExcelファイルを読み取る必要がありましたが、それらを読み取るためにOffice 2003 XML形式を使用し、その種類のExcelファイルのみを保存およびアップロードするためにアプリケーションを使用しているユーザーに伝えました。
Excelファイルのデータをどのように使用するかによって異なります。 mysqlにインポートする場合は、単純にCSV形式のファイルとして保存してから fgetcsv を使用して解析することができます。
XLSXを読む(Excel 97-2003)
https://github.com/shuchkin/simplexls
if ( $xls = SimpleXLS::parse('book.xls') ) {
print_r( $xls->rows() );
} else {
echo SimpleXLS::parseError();
}
XLSX(Excel 2003+)を読む
https://github.com/shuchkin/simplexlsx
if ( $xlsx = SimpleXLSX::parse('book.xlsx') ) {
print_r( $xlsx->rows() );
} else {
echo SimpleXLSX::parseError();
}
出力
Array( [0] => Array ( [0] => ISBN [1] => title [2] =>著者 [3] =>出版社 [4] => ctry ) [1] =>配列 ( [0] => 618260307 [1] => The Hobbit [2] => JRR Tolkien [3] => Houghton Mifflin [4] => USA ) )
CSV PHPリーダー
https://github.com/shuchkin/simplecsv
PHPコードを使用してExcelファイルを読み書きする方法を説明する素晴らしい 記事 があります。MS-ExcelストリームハンドラPHPクラスを使用することをお勧めします。そのためのトップクラスのライブラリ:)
これを試して...
「xls and xlsx」を読むために次のコードを使用しました
<?php
include 'Excel_reader.php'; // include the class
$Excel = new PhpExcelReader; // creates object instance of the class
$Excel->read('Excel_file.xls'); // reads and stores the Excel file data
// Test to see the Excel data stored in $sheets property
echo '<pre>';
var_export($Excel->sheets);
echo '</pre>';
or
echo '<pre>';
print_r($Excel->sheets);
echo '</pre>';
参照: http://coursesweb.net/php-mysql/read-Excel-file-data-php_pc
// Here is the simple code using COM object in PHP
class Excel_ReadWrite{
private $XLSHandle;
private $WrkBksHandle;
private $xlBook;
function __construct() {
$this->XLSHandle = new COM("Excel.application") or die("ERROR: Unable to instantaniate COM!\r\n");
}
function __destruct(){
//if already existing file is opened
if($this->WrkBksHandle != null)
{
$this->WrkBksHandle->Close(True);
unset($this->WrkBksHandle);
$this->XLSHandle->Workbooks->Close();
}
//if created new xls file
if($this->xlBook != null)
{
$this->xlBook->Close(True);
unset($this->xlBook);
}
//Quit Excel Application
$this->XLSHandle->Quit();
unset($this->XLSHandle);
}
public function OpenFile($FilePath)
{
$this->WrkBksHandle = $this->XLSHandle->Workbooks->Open($FilePath);
}
public function ReadData($RowNo, $ClmNo)
{
$Value = $this->XLSHandle->ActiveSheet->Cells($RowNo, $ClmNo)->Value;
return $Value;
}
public function SaveOpenedFile()
{
$this->WrkBksHandle->Save();
}
/***********************************************************************************
* Function Name:- WriteToXlsFile() will write data based on row and column numbers
* @Param:- $CellData- cell data
* @Param:- $RowNumber- xlsx file row number
* @Param:- $ColumnNumber- xlsx file column numbers
************************************************************************************/
function WriteToXlsFile($CellData, $RowNumber, $ColumnNumber)
{
try{
$this->XLSHandle->ActiveSheet->Cells($RowNumber,$ColumnNumber)->Value = $CellData;
}
catch(Exception $e){
throw new Exception("Error:- Unable to write data to xlsx sheet");
}
}
/****************************************************************************************
* Function Name:- CreateXlsFileWithClmName() will initialize xls file with column Names
* @Param:- $XlsColumnNames- Array of columns data
* @Param:- $XlsColumnWidth- Array of columns width
*******************************************************************************************/
function CreateXlsFileWithClmNameAndWidth($WorkSheetName = "Raman", $XlsColumnNames = null, $XlsColumnWidth = null)
{
//Hide MS Excel application window
$this->XLSHandle->Visible = 0;
//Create new document
$this->xlBook = $this->XLSHandle->Workbooks->Add();
//Create Sheet 1
$this->xlBook->Worksheets(1)->Name = $WorkSheetName;
$this->xlBook->Worksheets(1)->Select;
if($XlsColumnWidth != null)
{
//$XlsColumnWidth = array("A1"=>15,"B1"=>20);
foreach($XlsColumnWidth as $Clm=>$Width)
{
//Set Columns Width
$this->XLSHandle->ActiveSheet->Range($Clm.":".$Clm)->ColumnWidth = $Width;
}
}
if($XlsColumnNames != null)
{
//$XlsColumnNames = array("FirstColumnName"=>1, "SecondColumnName"=>2);
foreach($XlsColumnNames as $ClmName=>$ClmNumber)
{
// Cells(Row,Column)
$this->XLSHandle->ActiveSheet->Cells(1,$ClmNumber)->Value = $ClmName;
$this->XLSHandle->ActiveSheet->Cells(1,$ClmNumber)->Font->Bold = True;
$this->XLSHandle->ActiveSheet->Cells(1,$ClmNumber)->Interior->ColorIndex = "15";
}
}
}
//56 is for xls 8
public function SaveCreatedFile($FileName, $FileFormat = 56)
{
$this->xlBook->SaveAs($FileName, $FileFormat);
}
public function MakeFileVisible()
{
//Hide MS Excel application window`enter code here`
$this->XLSHandle->Visible = 1;
}
}//end of Excel class