Php 如何将excel文件的所有单元格合并到一个数组中,以及如何使“自动完成”搜索框工作
我有两个问题: 1) 我使用PHPExcel从单元格中检索数据,我有简单的代码2将其打印出来Php 如何将excel文件的所有单元格合并到一个数组中,以及如何使“自动完成”搜索框工作,php,jquery,jquery-ui,phpexcel,Php,Jquery,Jquery Ui,Phpexcel,我有两个问题: 1) 我使用PHPExcel从单元格中检索数据,我有简单的代码2将其打印出来 <?php set_include_path(implode(PATH_SEPARATOR, [ realpath(__DIR__ . '/Classes'), // assuming Classes is in the same directory as this script get_include_path() ])); requir
<?php
set_include_path(implode(PATH_SEPARATOR, [
realpath(__DIR__ . '/Classes'), // assuming Classes is in the same directory as this script
get_include_path()
]));
require_once dirname(__FILE__) . '/Classes/PHPExcel/IOFactory.php';
require_once 'PHPExcel.php';
$file= "./uploads/".$_GET["filename"];
//if you want to try it you can use this and comment line on the above
// $inputFileName = './sampleData/yourexcelname.xls';
$inputFileName = ($file);
// Read your Excel workbook
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
// Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
// Loop through each row of the worksheet in turn
for ($row = 1; $row <= $highestRow; $row++){
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
NULL,
TRUE,
FALSE);
var_dump($rowData); // Insert row data array into your database of choice here
echo "-----------------as json encode---------------";
var_dump(json_encode($rowData));
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Autocomplete - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
$(function() {
var availableTags =<?php echo json_encode($rowData); ?>;
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>
</head>
<body>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>
</body>
</html>
我试着用这个:
$total = $sheet->mergeCells('A' . $row . ':' . $highestColumn . $row, NULL,
TRUE,
FALSE);
echo "-----------------as Total---------------";
var_dump($total);
然而,它只是呼应与文档安全和财产缓存信息等相关的每一个细节,除了我想要的一切。如何合并单元格中的数据
2)我尝试将php数组转换为js数组,以便将数组放入自动完成搜索框()
正如我在这里使用的:
$(function() {
var availableTags = $.parseJSON('<?php echo json_encode($rowData); ?>');
$( "#tags" ).autocomplete({
source: availableTags
});
});
$(函数(){
var availableTags=$.parseJSON(“”);
$(“#标记”).autocomplete({
资料来源:availableTags
});
});
然而,当我将此json_编码转换时,我建议的选项没有出现。
问题:如何使转换后的阵列回显我的数据
有用的方便帮助将不胜感激 正如@MarkBaker所建议的,我找到了一个非常有效的解决方案:
$kova=array();
for ($row = 1; $row <= $highestRow; $row++)
{
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
NULL,
TRUE,
FALSE);
echo "-----------------as rowData---------------";
var_dump($rowData); // Insert row data array into your database of choice here
echo "-----------------returning into single array---------------";
array_push($kova,$rowData);
var_dump($kova);
$myFlatArray = PHPExcel_Calculation_Functions::flattenArray($kova);
echo "<br>";
echo "----------------- converting into json encode---------------";
var_dump(json_encode($myFlatArray));
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Autocomplete - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
$(function() {
var availableTags = $.parseJSON('<?php echo json_encode($myFlatArray); ?>');
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>
</head>
<body>
<br>
<br>
<br>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
<br>
<br>
<br>
<br>
</div>
$kova=array();
对于($row=1;$row RANGETORARRAY('A'.$row'.:'。$HIGHEST COLUMN.$row),
无效的
是的,
假);
回显“--------------作为行数据--------------------”;
var_dump($rowData);//在此处选择将行数据数组插入数据库
echo“--------------返回到单个数组--------------------”;
数组推送($kova,$rowData);
var_dump(科瓦);
$myFlatArray=PHPExcel\u计算函数::FlatArray($kova);
回声“
”;
echo“--------------转换为json编码--------------------”;
变量转储(json编码($myFlatArray));
}
?>
jQuery UI自动完成-默认功能
$(函数(){
var availableTags=$.parseJSON(“”);
$(“#标记”).autocomplete({
资料来源:availableTags
});
});
标签:
两个问题需要两个问题。请将其拆分。@Jandogen,问题已在“问题标题”中突出显示然而,因为您没有理解。我再次复制并粘贴到上下文中。第二,第二个问题取决于第一个问题,我同时问了两个问题。合并单元格时,您预计会发生什么?您确实意识到调用mergeCells()
返回工作表对象?它的作用是将指定的区域转换为一个单元格,与MS Excel中合并单元格的作用完全相同。您好@MarkBaker,谢谢您的评论。事实上,我是根据您的回答写的:如果您真的想合并单元格,您做的完全正确,a得到你应该得到的回报…但将工作表行中的每个单元格合并为单个单元格似乎是一个毫无意义的练习…特别是当你似乎希望问题的下一部分有一个值数组时…rangeToArray()有什么问题返回数组?您认为合并单元格会给您带来什么?
$kova=array();
for ($row = 1; $row <= $highestRow; $row++)
{
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
NULL,
TRUE,
FALSE);
echo "-----------------as rowData---------------";
var_dump($rowData); // Insert row data array into your database of choice here
echo "-----------------returning into single array---------------";
array_push($kova,$rowData);
var_dump($kova);
$myFlatArray = PHPExcel_Calculation_Functions::flattenArray($kova);
echo "<br>";
echo "----------------- converting into json encode---------------";
var_dump(json_encode($myFlatArray));
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Autocomplete - Default functionality</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
$(function() {
var availableTags = $.parseJSON('<?php echo json_encode($myFlatArray); ?>');
$( "#tags" ).autocomplete({
source: availableTags
});
});
</script>
</head>
<body>
<br>
<br>
<br>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
<br>
<br>
<br>
<br>
</div>