在业务开发的过程中,由于SAAS系统推进度的过程中会存在大量使用表格的情况,此时PhpOffice不可或缺;
最近遇到的问题,由于某一列数据存在长达20位的数字(客户录入的纯数字),正常导出Excel的时候,就会变成科学计数法展示;
我们导出完Excel还有需要需要上传再修改信息,这时候上传读取该列数据,又存在科学计数法展示,更新入库就出错;
1、导出Excel设置数字列强转文本
<?php
require 'vendor/autoload.php'; // 请确保已经安装了 PhpSpreadsheet,并加载其自动加载文件
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// 创建一个新的 Excel 对象
$spreadsheet = new Spreadsheet();
// 获取工作表
$sheet = $spreadsheet->getActiveSheet();
// 将数据设为字符串类型
$data = "12345678901234567890";
// 设置单元格的值为字符串
$sheet->setCellValueExplicit('A1', $data, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
// 导出 Excel 文件
$writer = new Xlsx($spreadsheet);
$writer->save('exported_file.xlsx');
?>
2、导入样本设置数字列获取格式化后的值
<?php
require 'vendor/autoload.php'; // 请确保已经安装了 PhpSpreadsheet,并加载其自动加载文件
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader;
$reader = new XlsxReader();
$reader->setReadDataOnly(true);
// 读取 Excel 文件
$spreadsheet = IOFactory::load('your_excel_file.xlsx');
// 获取第一个工作表
$worksheet = $spreadsheet->getActiveSheet();
// 获取单元格的格式化值
$cellFormattedValue = $worksheet->getCell('A1')->getFormattedValue();
// 输出格式化后的值
echo "Formatted Value: $cellFormattedValue\n";
?>