您好我使用 http://phpexcel.codeplex.com读取和写入excel文件.当我阅读它并写新的数据图表时,我在excel文件中有图形.这个例子没有7即07reader.php但更改包含文件从"05featuredemon.php"到"33chartcreate-bar.php",因为我需要图表
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
date_default_timezone_set('Europe/London');
/** Include PHPExcel_IOFactory */
require_once '../Classes/PHPExcel/IOFactory.php';
if (!file_exists("33chartcreate-bar.xlsx")) {
exit("Please run 33chartcreate-bar.php first." . EOL);
}
echo date('H:i:s') , " Load from Excel2007 file" , EOL;
$objPHPExcel = PHPExcel_IOFactory::load("05featuredemo.xlsx");
echo date('H:i:s') , " Write to Excel2007 format" , EOL;
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
// Echo …Run Code Online (Sandbox Code Playgroud) 我正在使用php excel来创建excel文件.我正在从MySQL数据库中获取的php数组值填充我的excel文件.我在第一列中有字符串数据类型.但是在创建excel文件之后,像0987这样的字符串将转换为987并自动对齐到单元格的右侧.我真的不想要这个excel文件的默认功能.我如何解决这个问题.任何提示/解决方案......帮助我......
嗨,我有这个代码来读取表单excel文件并使用joomla添加到数据库
try
{
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
}
catch(Exception $e) {
die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for($i = 11; $i <= $highestRow; $i++)
{
$rowData = $sheet->rangeToArray('A' . $i . ':' . $highestColumn . $i,
NULL,
TRUE,
True
);
$row = $rowData[0];
$valeur1 = $row[8];
}
Run Code Online (Sandbox Code Playgroud)
我打开文件,每行读取一次,每行读取每个单元格
好吧有时候行[8]是一个格式化的数字(100100.5),有时候不像(100,100.5)或其他什么我需要知道细胞类型,如果细胞不是数字就做一些改变.
我正在使用PHPExcel读取excel文件中具有类似'Mar-13'的值的日期单元格,但它返回的整数值如'41791'.请问,我需要做些什么来确保日期正确读入?
我正在构建Excel模板,以从我们的用户那里获取有关产品的数据。问题是某些字段的数量可能会有所不同。
例如,产品可以有1个贡献者或12个贡献者。每个贡献者都有以下字段:
我认为在Excel模板中包含12 * 4列不是一个好主意,因为第二天用户可以发送包含13个贡献者的产品。
我决定在一个单元格中包含有关所有贡献者的数据,例如在“贡献者密钥名称”单元中,我将拥有所有产品贡献者的名称,在“贡献者角色”单元中,我将具有所有贡献者的角色,等等。
我想用新的线符号划分贡献者数据。我使用以下数据创建了Excel表:

问题是,当我在PHP中读取这些单元格的值(例如“贡献者键名称”)时,看不到换行符号。相反,我收到带有奇怪字符的字符串:

我试着做
explode('\n',$cellValue);
Run Code Online (Sandbox Code Playgroud)
但这不起作用。
我使用PHPExcel库处理表。
我的问题是-如何在Excel中编码换行符号?您建议在Excel单元中使用什么作为分隔符?
UPD:
因此,为了用换行符分隔字符串,应使用“ \ n”作为分隔符。
我认为,字符串中出现了奇怪的符号,因为最初我是在Numbers应用程序中创建表,然后导出为xslx格式。(数字在导出过程中出现换行符问题)
我正在使用phpexcel库来读取一个excel文件.它的工作效率达到了99%.但有时它也会读取空列.我的代码是
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die('Error loading file');
}
$worksheet=$objPHPExcel->getActiveSheet();) {
$worksheetTitle = $worksheet->getTitle();
$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
Run Code Online (Sandbox Code Playgroud)
有时候,即使excel列中的数据达到"C"为什么,$ highestcolumn也会返回'WVL'.另外我想检查特定列下的所有行是否为空,是否有任何简单的方法来执行它而不是使用for循环迭代所有行.
我试图读取一个单元格,其中可能有尾随零作为字符串而不是数字(剥离前导零).正如此答案所示,单元格由整数列/行读取,而不是列字符串.
初始代码
$instReader = $reader->load($this->file);
$sheet = $instReader->getSheet(0);
Run Code Online (Sandbox Code Playgroud)
我试过修改这个:
$keyCell = $sheet->getCellByColumnAndRow(1,5);
Run Code Online (Sandbox Code Playgroud)
至:
$sheet->setCellValueExplicitByColumnAndRow(1,5, PHPExcel_Cell_DataType::TYPE_STRING);
$keyCell = $sheet->getCellByColumnAndRow(1,5);
Run Code Online (Sandbox Code Playgroud)
前者为$ keyCell而不是01407提供1407
后者给出"s"或""
在调用getCellByColumnAndRow并仅使用列和行的整数值之前,如何将单元格视为字符串.
(顺便说一句,如果这可以针对整个列进行一次,而不是每次针对每个单独的单元格做得更好)
我试图找到一种方法来获取使用PHP的excel表格的rowid和columnid,类似于 if($date == $row){ your $rowid = 'something}
我见过类似的东西
$row = $objPHPExcel->getActiveSheet()->getRowIterator($searchValue)-
>current();
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
echo $cell->getValue();
}
Run Code Online (Sandbox Code Playgroud)
但$ searchValue指的是一行,而不是一个实际的搜索词,我需要在工作表中找到当前日期,当前日期是在一个名为date的列上,如果我发现该日期得到rowid/colid,那么我可以写入那行和列,我知道我将永远使用任何给定行的6列,对此有什么想法吗?或者一些指针可能
我有一个有时间输入的Excel文件。
Mar 01, 2018 | Thursday | 8:00 AM | 5:00 PM
Mar 02, 2018 | Friday | 8:00 AM | 5:00 PM
Run Code Online (Sandbox Code Playgroud)
但是,当我的代码尝试读取这些单元格时,输出将变为浮点型(例如8:00 AM变为0.33333333333333)。这是我的代码
$date = $sheet->getCell("A".$row)->getValue();
$time_in = $sheet->getCell("C".$row)->getValue();
$time_out = $sheet->getCell("D".$row)->getValue();
echo "date: ".$date. //Mar 01, 2018
" time_in: ".$time_in. //becomes 0.333333333333333
" time_out: ".$time_out; //becomes 0.708333333333333
Run Code Online (Sandbox Code Playgroud)
如何在不更改phpspreadsheet值的情况下原样输出?我尝试查看phpspreadsheet文档,但未找到解决方案。
我正在尝试几天,我不知道为什么它不起作用。我想在中间设置单元格值。我的输出如下:
我的预期输出如下:
我想每一列都必须以我为中心,我已经尝试过以下代码:-
$styleArray = [
'font' => [
'bold' => true,
],
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER,
],
'fill' => [
'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
'startColor' => [
'argb' => '0070C0',
],
'endColor' => [
'argb' => '0070C0',
],
],
];
$spreadsheet->getDefaultStyle()->getFont()->setSize(10);
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有其他属性,例如HORIZONTAL_CENTER,RIGHT,LEFT,JUSTIFY..etc。请帮助我,我该怎么做。