我是PHP新手,我正在从excel电子表格中读取数据,我想将每一行保存为数组。在我拥有该数组之后,我想将该数组传递给另一个函数,以使用特定标题“设置”每个数组值。我无法弄清楚这一点,并希望有人可以提供帮助。
这是第一个脚本:
<?php
include './Classes/PHPExcel.php';
include 'testCase.php';
class ExcelReader{
function getExcelFile(){
/*Get file from form*/
echo 'Hello world' . "\n";
$FileName = $_FILES["fileName"]["name"];
/*Move file to server, if file already exists, don't move*/
if(file_exists("uploadedFiles/".$_FILES["fileName"]["name"])){
echo $_FILES["fileName"]["name"]." already exists";
}
else{
move_uploaded_file($_FILES["fileName"]["tmp_name"],"uploadedFiles/".$_FILES["fileName"]["name"]);
echo $_FILES["fileName"]["name"]." has been moved";
}
return $FileName;
}
function readExcelFile($FileName){
/*Create reader object for file and read object in*/
$PHPExcelReader= PHPExcel_IOFactory::createReaderForFile($FileName);
$PHPExcelReader->setReadDataOnly(true);
$PHPExcelObj=$PHPExcelReader->load($FileName);
$PHPobjWorksheet = $PHPExcelObj->getActiveSheet();
$topRow = $PHPobjWorksheet->getHighestRow();
$topCol = $PHPobjWorksheet->getHighestColumn();
$highestColIndex= PHPExcel_Cell::columnIndexFromString($topCol);
for($row=1;$row<=$topRow; $row++){
$newTestCase = new testCase();
$testIndex = $newTestCase->getTestCase($row, $highestColIndex, $PHPobjWorksheet);
echo $testIndex."<- Test Index <br/>";
$newTestCase->setTestCase($testIndex);
}
}
}
$newExcelReader = new ExcelReader;
$newFileName = $newExcelReader->getExcelFile();
$newExcelReader->readExcelFile($newFileName);
?>
这是我用来获取数据的第二个类,我正在尝试设置:
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
* Class for creating test cases to be sent
* into TestRail
* @author Banderson
*/
class testCase {
/*Function to get the data for each individual test case*/
function getTestCase($row, $highestColIndex, $PHPobjWorksheet){
echo "<br />";
for($col=0;$col<=$highestColIndex;++$col){
$ii=0;
$cellValue=array($PHPobjWorksheet->getCellByColumnAndRow($col,$row)->getValue());
echo $cellValue[$ii]. " | ";
$ii++;
}
return $cellValue;
}
/*Function to set the data for each individual test case*/
function setTestCase($cellValue){
$title = $cellValue[0];
echo $title. "<- Title"."<br/>";
$type = $cellValue[1];
echo $type. "<- Type"."<br/>";
$priority = $cellValue[2];
echo $priority. "<- Priority"."<br/>";
$estimate = $cellValue[3];
echo $estimate. "<- Estimate"."<br/>";
$milestone = $cellValue[4];
echo $milestone. "<- MileStone"."<br/>";
$references = $cellValue[5];
echo $references. "<- 5"."<br/>";
$preconditions = $cellValue[6];
echo $preconditions. "<- 6"."<br/>";
$steps = $cellValue[7];
echo $steps. "<- 7"."<br/>";
$expectedResults = $cellValue[8];
echo $expectedResults. "<- 8"."<br/>";
$testSuit = $cellValue[9];
echo $testSuit. "<- 9"."<br/>";
}
}
?>
最后这是我收到的错误消息:
Hello world testrailtestinputV2.xlsx already exists
Title | Type | Priority | Estimate | Milestone | Reference | Preconditions | Steps | Expected Result | Section | Test Suite | | Array<- Test Index<- Title
( ! ) Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 37
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.3133 5664536 testCase->setTestCase( ) ../testRailScripting.php:50
<- Type
( ! ) Notice: Undefined offset: 2 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 39
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.3133 5664536 testCase->setTestCase( ) ../testRailScripting.php:50
<- Priority
( ! ) Notice: Undefined offset: 3 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 41
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.3133 5664536 testCase->setTestCase( ) ../testRailScripting.php:50
<- Estimate
( ! ) Notice: Undefined offset: 4 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 43
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.3133 5664536 testCase->setTestCase( ) ../testRailScripting.php:50
<- MileStone
( ! ) Notice: Undefined offset: 5 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 45
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.3133 5664536 testCase->setTestCase( ) ../testRailScripting.php:50
<- 5
( ! ) Notice: Undefined offset: 6 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 47
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.3133 5664536 testCase->setTestCase( ) ../testRailScripting.php:50
<- 6
( ! ) Notice: Undefined offset: 7 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 49
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.3133 5664536 testCase->setTestCase( ) ../testRailScripting.php:50
<- 7
( ! ) Notice: Undefined offset: 8 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 51
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.3133 5664536 testCase->setTestCase( ) ../testRailScripting.php:50
<- 8
( ! ) Notice: Undefined offset: 9 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 53
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.3133 5664536 testCase->setTestCase( ) ../testRailScripting.php:50
<- 9
Title 1 | Functionalit | 1 | | | | | 1. Turn phone on 2. Go to main menu 3. Push button | The screen should look like this | | | | Array<- Test Index<- Title
( ! ) Notice: Undefined offset: 1 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 37
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.5097 5675280 testCase->setTestCase( ) ../testRailScripting.php:50
<- Type
( ! ) Notice: Undefined offset: 2 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 39
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.5097 5675280 testCase->setTestCase( ) ../testRailScripting.php:50
<- Priority
( ! ) Notice: Undefined offset: 3 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 41
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.5097 5675280 testCase->setTestCase( ) ../testRailScripting.php:50
<- Estimate
( ! ) Notice: Undefined offset: 4 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 43
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.5097 5675280 testCase->setTestCase( ) ../testRailScripting.php:50
<- MileStone
( ! ) Notice: Undefined offset: 5 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 45
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.5097 5675280 testCase->setTestCase( ) ../testRailScripting.php:50
<- 5
( ! ) Notice: Undefined offset: 6 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 47
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.5097 5675280 testCase->setTestCase( ) ../testRailScripting.php:50
<- 6
( ! ) Notice: Undefined offset: 7 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 49
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.5097 5675280 testCase->setTestCase( ) ../testRailScripting.php:50
<- 7
( ! ) Notice: Undefined offset: 8 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 51
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.5097 5675280 testCase->setTestCase( ) ../testRailScripting.php:50
<- 8
( ! ) Notice: Undefined offset: 9 in /Applications/MAMP/htdocs/TestRailIntegration/testCase.php on line 53
Call Stack
# Time Memory Function Location
1 0.0000 635280 {main}( ) ../testRailScripting.php:0
2 0.0034 749112 ExcelReader->readExcelFile( ) ../testRailScripting.php:57
3 0.5097 5675280 testCase->setTestCase( ) ../testRailScripting.php:50
<- 9
Title 2 | Functionalit | 1 | | | | | 1. Turn phone on 2. Go to main menu 3. Push button | The screen should look like this | | | | Array<- Test Index<- Title
任何帮助都会很精彩!先感谢您!
答案 0 :(得分:3)
您的函数getTestCase
创建一个包含一个元素的新数组,并在每次迭代时将其放入变量$cellValue
。因此,此函数返回的数组只包含一个元素。您应该以这种方式修复它:
function getTestCase($row, $highestColIndex, $PHPobjWorksheet) {
$cellValue = array();
for($col = 0; $col <= $highestColIndex; ++$col) {
$v = $PHPobjWorksheet->getCellByColumnAndRow($col,$row)->getValue();
$cellValue[] = $v; //append element to the array
}
return $cellValue;
}
答案 1 :(得分:0)
不是单独读取行中的每个单元格而是自己从这些值构建数组,您可以让PHPExcel使用工作表的toArray()方法为您构建数组
/**
* Create array from a range of cells
*
* @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1")
* @param mixed $nullValue Value returned in the array entry if a cell doesn't exist
* @param boolean $calculateFormulas Should formulas be calculated?
* @param boolean $formatData Should formatting be applied to cell values?
* @param boolean $returnCellRef False - Return a simple array of rows and columns indexed by number counting from zero
* True - Return rows and columns indexed by their actual row and column IDs
* @return array
*/
public function rangeToArray($pRange = 'A1', $nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false)
只需使用标准Excel范围格式表示法指定范围,例如A1:Z1