Je travaille sur staff attendance
. L'utilisateur peut télécharger une feuille de présence et mon système donnera la vue de la feuille de présence à l'utilisateur et ensuite il peut l'enregistrer dans la base de données. Les valeurs d'Excel feuille sauver avec succès dans la base de données. Le problème est que l'utilisateur peut ajouter un enregistrement dans les colonnes de la feuille Excel dans n'importe quel format, mais quand je reçois PHP, le format de la date ne va pas.Convertir le format des colonnes excelsheet en PHP ne fonctionne pas
par exemple. lorsque l'utilisateur ajouter la date de présence dans la colonne, le format de la colonne est date
et quand il peut enregistrer dans le temps, il peut être le format numérique et lorsque l'utilisateur télécharger cette feuille Excel, l'aperçu de la date est entré dans unix time stamp
.
Voici des exemples dans les images
Vous pouvez voir dans l'image ci-dessus que la date est convertie en horodatage unix et l'heure d'entrée et de sortie en numérique.
Je veux cette vue lorsqu'un utilisateur peut télécharger une feuille Excel.
Alors espérons que vous comprendrez mon problème et ce que je veux.
Voici mon téléchargement et afficher des fichiers Excel Code feuille:
$excel_file = $_FILES['file']['name'];
$target = SERVERPATH . 'assets/attendance_excel/';
$ext = pathinfo($excel_file, PATHINFO_EXTENSION);
$filename = rand() . date("YmdHis");
move_uploaded_file($_FILES['file']['tmp_name'], $target . $filename . '.' . $ext);
include(EXCEL_CLASS);
$inputFileName = $target . $filename . '.' . $ext;
// chmod($inputFileName,0777);
try {
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
} catch (Exception $e) {
die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME) . '": ' . $e->getMessage());
}
$objWorksheet = $objPHPExcel->getActiveSheet();
// $objWorksheet->getStyle('A1:E433')->getNumberFormat()->setFormatCode('Text');
$highestRow = $objWorksheet->getHighestRow(); // e.g. 10
$highestColumn = $objWorksheet->getHighestDataRow();
$highestColumn = $objWorksheet->getHighestColumn(); // e.g 'F'
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); // e.g. 5
$td_data = '';
$row_no = 0;
for ($row = 1; $row <= $highestRow; ++$row) {
$check_empty_column = 0;
for ($col = 0; $col <= $highestColumnIndex; ++$col) {
if ($objWorksheet->getCellByColumnAndRow($col, $row)->getValue() == null) {
$check_empty_column++;
}
}
if ($check_empty_column < $highestColumnIndex) {
for ($col = 0; $col < $highestColumnIndex; ++$col) {
$td_data .= '<td>' . $objWorksheet->getCellByColumnAndRow($col, $row)->getValue() . '</td>';
}
}
$tr_data[$row_no] = $td_data;
$td_data = '';
$row_no++;
}
$data_all = array(
'data' => $tr_data,
't_col' => $highestColumnIndex,
'name' => $filename . '.' . $ext
);
echo json_encode($data_all);
je recherche aussi beaucoup à ce sujet et trouvé quelque chose comme ça setFormatCode
, PHPExcel_Style_NumberFormat::FORMAT_GENERAL
etc mais ne fonctionne pas pour moi. Je fais de mon mieux.
Alors s'il vous plaît donnez-moi une solution à ce problème.
Note: Je ne peux pas interdire à un utilisateur qu'il convertit les colonnes et que d'ajouter des données.
espère que vous comprenez ma question
pouvez-vous s'il vous plaît me dire comment puis-je faire en mon code ... parce que j'ai toutes les colonnes et les lignes dynamiquement – deemi
Comme vous savez quelles cellules contiennent des dates, vous récupérez la valeur de la cellule en utilisant '$ objWorksheet-> getCellByColumnAndRow ($ col, $ row) -> getValue()' et passez le résultat en argument à 'PHPExcel_Shared_Date :: ExcelToPHPObject() ', récupérant ce résultat, puis utilisant la méthode' format() 'de l'objet DateTime pour lui indiquer comment afficher le résultat –
Alternativement, vous pouvez utiliser' getFormattedValue() 'plutôt que' getValue() 'pour indiquer PHPExcel pour retourner le résultat pré-formaté selon le masque de format numérique qui a été défini dans le tableur lui-même –