我想从csv或xls excel获取数据,以便在我的mysql数据库中大量加载员工,但首先显示表中的所有记录。该项目是用joomla的PHP ..
我试过了:
. include JPATH_SITE '/ libraries / simpleexcel / src / SimpleExcel / SimpleExcel.php';
JHTML :: addIncludePath (JPATH_SITE '/ libraries / excel / reader.php'.)
$ name = $ _POST ['name'];
Spreadsheet_Excel_Reader $ data = new ();
$ data-> setOutputEncoding ('CP1251');
$ data-> read ($ name);
echo ("<table>");
for ($ i = 1; $ i <= $ data-> sheets [0] ['numRows']; ++ $ i) {
echo ("<tr>");
for ($ j = 1, $ j <= $ data-> sheets [0] ['NumCols']; ++ $ j) {
echo ("<td>" $ data-> sheets [0] ['cells'] [$ i] [$ j] "</ td>"..);
}
echo ("</ tr>");
}
但导入库显然没问题
也不承认这一点:
_FILES ['File'] ['name'] $
如果有人可以提供帮助,谢谢。 !!
答案 0 :(得分:0)
OOPS - 我误读了您的电子表格库,认为它是PHPExcel。我相信这仍然可以正常工作,只需调整SimpleExcel。
我刚试过这段代码,它按预期工作。您需要输入您网站上的值以及正在上传的文件的名称,然后调整所需的表格输出。
<?php
define( '_JEXEC', 1 );
define ('JPATH_BASE', 'c:\\wamp\\www\\mysite');
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );
require_once ( JPATH_BASE .'/PathToPhpExcel/PHPExcel.php' );
require_once ( JPATH_BASE .'/PathToPhpExcel/Reader/Excel2007.php' );
$objReader = new PHPExcel_Reader_Excel2007();
$objReader->setReadDataOnly(true);
// Get spreadsheet file name from $_FILES
$spreadsheet = 'c:\path\to\your\spreadsheet.xlsx';
$objPHPExcel = $objReader->load($spreadsheet);
$worksheet = $objPHPExcel->getActiveSheet();
$doImport = false;
if($doImport)
jimport('joomla.user.helper');
echo "<table>";
foreach ($worksheet->getRowIterator() as $row) {
$r = $row->getRowIndex();
$udata = array(
"name"=>$worksheet->getCell('A'.$r)->getCalculatedValue(),
"username"=>$worksheet->getCell('B'.$r)->getCalculatedValue(),
"password"=>$worksheet->getCell('C'.$r)->getCalculatedValue(),
"password2"=>$worksheet->getCell('C'.$r)->getCalculatedValue(),
"email"=>$worksheet->getCell('D'.$r)->getCalculatedValue(),
"block"=>0,
"groups"=>array("1","2") // 1=Public, 2=Registered
);
echo "<tr>";
foreach($udate as $k=>$v){
echo'<td>'.$v.'</td>';
}
if($doImport) {
$user = new JUser;
if(!$user->bind($udata)) {
throw new Exception("Could not bind data. Error: " . $user->getError());
}
if (!$user->save()) {
throw new Exception("Could not save user. Error: " . $user->getError());
}
$new_user_id = $user->id;
echo'<td>'.$new_user_id.'</td>';
}
echo "</tr>";
}
echo "</table>";
?>
答案 1 :(得分:0)
由于您将第三方库放在libraries目录中,实际上只需要一行代码来加载它:
jimport('simpleexcel.src.simpleexcel.simpleexcel');
您可以使用jimport导入位于Joomla根库文件夹中的任何php文件。文件夹描述标有句点,排除库文件夹,因为它是假定的,一切都应该是小写的。
*编辑1 *
您可以使用以下代码链接来检索Joomla中请求对象内的文件。在下面的示例中,filename是来自输入名称的属性。
$file = JRequest::getVar('filename', null, 'files', 'array');
由于这似乎是从表单提交中检索文件的问题,如果您可以发布用于生成表单的代码,这可能会有所帮助。您是使用Joomla xml表单定义文件还是手动构建它?以下是Joomla doc关于文件上传的链接以供参考。
答案 2 :(得分:0)
我正在使用joomla MVC,模型我有一个xml文件:
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset>
<field name="seleccione" type="file" class="inputbox" accept="xls"
label="COM_EMPRESA_FORM_LBL_CARGA_MASIVA" description="COM_EMPRESA_FORM_DESC_CARGA_MASIVA"
required="true" />
</fieldset>
</form>
并在视图中default.php:
<?php
/**
* @version 1.0.0
* @package com_empresa
* @copyright Copyright (C) 2014. Todos los derechos reservados.
* @license Licencia Pública General GNU versión 2 o posterior. Consulte LICENSE.txt
* @author Rafael Gasperi <rafael.gasperi@sipeca.net> - http://www.tcontacta.com
*/
// no direct access
defined('_JEXEC') or die;
jimport('joomla.filesystem.folder');
$document = JFactory::getDocument();
//$document->addStyleSheet(JPATH_ADMINISTRATOR.'/components/com_empresa/assets/css/empresa.css');
JHtml::_('behavior.keepalive');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
//Load admin language file
$lang = JFactory::getLanguage();
$lang->load('com_empresa', JPATH_ADMINISTRATOR);
?>
<!-- Styling for making front end forms look OK -->
<!-- This should probably be moved to the template CSS file -->
<style>
.front-end-edit ul {
padding: 0 !important;
}
.front-end-edit li {
list-style: none;
margin-bottom: 6px !important;
}
.front-end-edit label {
margin-right: 10px;
display: block;
float: left;
text-align: right;
width: 200px !important;
}
.front-end-edit .radio label {
margin-right: 10px;
display: block;
float: left;
text-align: left;
width: 200px !important;
}
.front-end-edit .readonly {
border: none !important;
color: #666;
}
.front-end-edit #editor-xtd-buttons {
height: 50px;
width: 600px;
float: left;
}
.front-end-edit .toggle-editor {
height: 50px;
width: 120px;
float: right;
}
#jform_rules-lbl {
display: none;
}
#access-rules a:hover {
background: #f5f5f5 url('../images/slider_minus.png') right top
no-repeat;
color: #444;
}
</style>
<div class="empresa-edit front-end-edit">
<form id="form-cargar" action="<?php echo JRoute::_('index.php?option=com_empresa&task=cargamasiva.mostrar'); ?>" method="post" class="form-validate" enctype="multipart/form-data">
<div class="control-group">
<legend><?php echo JText::_('COM_EMPRESA_CARGA_MASIVA_TITULO_EMPLEADOS'); ?> </legend>
<div class="control-label"><?php echo $this->form->getLabel('seleccione'); ?></div>
<div class="controls"><?php echo $this->form->getInput('seleccione'); ?></div>
</div>
<div class="fltlft" <?php if (!JFactory::getUser()->authorise('core.admin','empresa')): ?> style="display:none;" <?php endif; ?> >
<?php echo JHtml::_('sliders.start', 'permissions-sliders-'.$this->item->id, array('useCookie'=>1)); ?>
<?php echo JHtml::_('sliders.panel', JText::_('ACL Configuration'), 'access-rules'); ?>
<fieldset class="panelform">
<?php echo $this->form->getLabel('rules'); ?>
<?php echo $this->form->getInput('rules'); ?>
</fieldset>
<?php echo JHtml::_('sliders.end'); ?>
</div>
<?php if (!JFactory::getUser()->authorise('core.admin','empresa')): ?>
<script type="text/javascript">
jQuery.noConflict();
jQuery('.tab-pane select').each(function(){
var option_selected = jQuery(this).find(':selected');
var input = document.createElement("input");
input.setAttribute("type", "hidden");
input.setAttribute("name", jQuery(this).attr('name'));
input.setAttribute("value", option_selected.val());
document.getElementById("form-empresa").appendChild(input);
jQuery(this).attr('disabled',true);
});
</script>
<?php endif; ?>
</form>
<form id="form-empresa" action="<?php echo JRoute::_('index.php?option=com_empresa&task=cargamasiva.save'); ?>" method="post" class="form-validate" enctype="multipart/form-data">
<div>
<button id="jform_btnCargar" class="btn tip" type="button" class="hasTooltip" title="<?php echo JText::_('COM_EMPRESA_CARGA_MASIVA_CARGAR'); ?>">
<i class="icon-checkmark"></i> <span><?php echo JText::_('COM_EMPRESA_CARGA_MASIVA_CARGAR'); ?></span> </button>
</div>
<legend><?php echo JText::_('COM_EMPRESA_CARGA_MASIVA_EMPLEADOS'); ?> </legend>
<div class="empresa-edit front-end-edit-list">
<table class="table table-striped" id="jform_cargamasivaList" name="jform[cargamasivaList]" >
<thead>
<tr>
<th width="1%" class="hidden-phone">
<input type="checkbox" id="chk" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="checkAll();" />
</th>
<th class='left'>
<?php echo JText::_('COM_EMPRESA_CARGA_MASIVA_CEDULA') ?>
</th>
<th class='left'>
<?php echo JText::_('COM_EMPRESA_CARGA_MASIVA_NOMBRE') ?>
</th>
<th class='left'>
<?php echo JText::_('COM_EMPRESA_CARGA_MASIVA_APELLIDO') ?>
</th>
<th class='left'>
<?php echo JText::_('COM_EMPRESA_CARGA_MASIVA_CORREO') ?>
</th>
<th class='left'>
<?php echo JText::_('COM_EMPRESA_CARGA_MASIVA_GENERO') ?>
</th>
<th class='left'>
<?php echo JText::_('COM_EMPRESA_CARGA_MASIVA_FECHA_NACIMIENTO') ?>
</th>
</tr>
</thead>
<tbody id="bodyEmpleados" >
</tbody>
</table>
</div>
<div class="form-actions">
<button type="submit" class="btn validate"><i class="icon-save"></i><span><?php echo JText::_('JPROCESAR'); ?></span></button>
<a class="btn" href=" <?php echo JRoute::_('index.php?option=com_empresa&task=empresa.cancel'); ?>" title="<?php echo JText::_('JCANCEL'); ?>">
<i class="icon-cancel"></i> <?php echo JText::_('JCANCEL'); ?></a>
</div>
</form>
</div>
<script type="text/javascript">
function validarExtension(){
alert("entro");
var archivo = document.getElementById('jform_seleccione').value;
if(archivo!= ""){
extension = (archivo.substring(archivo.lastIndexOf("."))).toLowerCase();
if(extension!=".xls"){
alert("El Archivo a cargar debe ser Excel en version 2003 (.xls)");
}else{
var fic = archivo.split('\\');
var nombre=fic[fic.length-1];
}
}else{
alert("No ha cargado ningún archivo");
}
}
function getScript(url,success) {
var script = document.createElement('script');
script.src = url;
var head = document.getElementsByTagName('head')[0],
done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function() {
if (!done && (!this.readyState
|| this.readyState == 'loaded'
|| this.readyState == 'complete')) {
done = true;
success();
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
};
head.appendChild(script);
}
getScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js',function() {
js = jQuery.noConflict();
js(document).ready(function(){
js("#jform_btnCargar").click(function()
{
var archivo = document.getElementById('jform_seleccione').value;
var fic = archivo.split('\\');
var nombre=fic[fic.length-1];
js.ajax({
type:"POST",
url: "index.php?option=com_empresa&task=cargamasiva.mostrar",
data:"nombre="+nombre,
datatype:"application/json",
success: function(data){
alert("entro js");
var objData = jQuery.parseJSON(data);
alert("data"+data);
alert(objData.valores[4]);
if (objData.error == 1){
procesarCarga('jform_cargamasivaList', objData.valores);
alert("salio pa controller");
}
},
error: function(jqXHR, textStatus, errorThrown) {
alert("error ajax");
alert(textStatus);
alert(jqXHR);
alert(errorThrown);
}
});
});
});
});
// getScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js',function() {
// js = jQuery.noConflict();
// // js(document).ready(function(){
//
// js("#jform_btnCargar").click(function()
// {
// var archivo = document.getElementById('jform_seleccione').value;
// var fic = archivo.split('\\');
// var nombre=fic[fic.length-1];
// validarExtension();
//
// js.ajax({
// type:"POST",
// url: "index.php?option=com_empresa&task=cargamasiva.mostrar",
// data:"nombre="+js("#jform_seleccione").val(),
// datatype:"application/json",
// success: function(data){
// alert("entro js");
// var objData = jQuery.parseJSON(data);
// alert("data"+objData);
// if (objData.error == 1){
// procesarCarga('jform_cargamasivaList', objData.valores);
// }
// },
// error: function(jqXHR, textStatus, errorThrown) {
// alert("error ajax");
// alert(textStatus);
// alert(jqXHR);
// alert(errorThrown);
// }
// });
// });
// // });
//});
function procesarCarga(tableID, valores) {
document.getElementById('bodyEmpleados').innerHTML = "";
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
// var archivo = document.getElementById('jform_seleccione').value;
// var fic = archivo.split('\\');
// var nombre=fic[fic.length-1];
// alert(nombre);
<?php
try {
$filas=file('nombre.txt');
// iniciamos contador y la fila a cero
$i=0;
$numero_fila=0;
// mientras exista una fila
while($filas[$i]!=NULL){
// incremento contador de la fila
$row = $filas[$i+1];
// genero array con por medio del separador "," que es el que tiene el archivo txt
$sql = explode(",",$row);
// incrementamos contador
$i++;
$numero_fila++;
}
} catch (Exception $e) {
echo "mostrar";
}
?>
alert(valores[1]);
alert(valores[2]);
alert(valores[0]);
alert("5");
// var numero = "<?php echo $row[0]; ?>";
//
// var fechaVencimiento = "<?php echo "hola";?>";
// var pais = "<?php echo "hola";?>";
// var idPaisEmision = "<?php echo "-gtr";?>";
var numero = valores[0];
var fechaVencimiento =valores[1];
var pais = valores[2];
var idPaisEmision = valores[3];
var numero = valores[4];
var numero = valores[5];
var idPaisEmision = "holis";
var empleados = '<tr class="row' + (rowCount % 2) + '" ><td class="center hidden-phone"><?php echo JHtml::_('grid.id', '', ''); ?></td><td>'+numero+'</td>'
+'<td>'+fechaVencimiento+'</td><td>'+pais+'</td></tr>'+'</td><td>'+idPaisEmision+'</td></tr>';
document.getElementById('bodyEmpleados').innerHTML = document.getElementById('bodyEmpleados').innerHTML + empleados;
}
</script>
因此管理视图