我上staff attendance
工作。用戶可以上傳考勤表,我的系統會出席Excel表單的用戶的視圖,然後他就可以將它保存到數據庫中。從Excel工作表中的值在數據庫成功保存。轉換excelsheet列格式在PHP不工作
問題是,用戶可以在Excel工作表的列添加到任何格式的記錄,但是當我在PHP中得到的日期格式出錯。
例如 當用戶在列中添加起止日期,列的格式是date
,當他可以在節省出來的時間也可能是數字格式,當用戶上傳此Excel工作表,日期預覽中unix time stamp
不見了。
以下是在圖像的例子
您可以在上圖中看到日期正在轉換爲unix時間戳和時間輸入和輸出數字。
我想要這個視圖,當用戶可以上傳Excel表。
所以希望你明白我的問題,我想要什麼。
這是我上傳和查看Excel工作表代碼:
$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);
我也搜索了很多關於這一點,發現像這樣setFormatCode
,PHPExcel_Style_NumberFormat::FORMAT_GENERAL
等,但它不是爲我工作。我盡力了。
所以,請給我這個問題的解決方案。
注:我不能限制他轉換列,比添加數據的用戶。
希望你明白我的問題
請你能告訴我,我怎麼能做到這一點的我的代碼......因爲我得到了所有專欄和動態行 – deemi
如您所知,哪些單元格包含日期,然後使用'$ objWorksheet-> getCellByColumnAndRow($ col,$ row) - > getValue()'檢索單元格值,並將結果作爲參數傳遞給'PHPExcel_Shared_Date :: ExcelToPHPObject()',檢索結果,然後使用DateTime對象的'format()'方法告訴它你想如何顯示結果 –
或者,你可以使用'getFormattedValue()'而不是'getValue()'來告訴PHPExcel返回根據電子表格中已設置的數字格式掩碼預格式化的結果 –