我已经搜索过这个问题的答案,但到目前为止还没有找到解决问题的方法。如果有人可以提供帮助,我们将不胜感激!
Backstory:我正在创建一个自动化流程,它将从FTP站点下载.xlsx文件,将数据加载到数组中,处理/计算阵列中的某些数据,然后从调整后的阵列中创建CSV文件。然后,此CSV文件将导入到仅接受CSV或JSON格式的第三方系统。
我目前正在使用SimpleXLSX来读取文件,因为它是PHPExcel,SimpleXLSX,Spout和其他一些我可以快速无问题地工作的文件(直到这一点)。
我的问题是,如果我在接收文件时尝试读取文件,则检索到数组的第一行是完全空白的。我还注意到第一个数组字段是[]:
Array
(
[0] => Array
(
[] =>
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
第二行仅检索非文本的数据,并且等于零。此外,该[]字段已在第一个和第二个字段之间转换:
[1] => Array
(
[0] =>
[] => CAD
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
注意:此[]字段中的值几乎看起来像是在列中旋转 - 在一个数组上,它将是Record Id字段的值,在下一个数字上,它将是CountryCode,等等。 / p>
现在 - 如果我在Excel中打开文件,删除电子表格底部的空行,并保存,xlsx文件的大小为三倍(2,327KB到6,443KB),但数据正确加载到数组中!
Array
(
[0] => Array
(
[0] => Record Id
[1] => Owner Name
[2] => Account Name
[3] => Numeric Code
[4] => Text Code
[5] => Record Location
[6] => Date Begins
[7] => Date Ends
[8] => Record Type
[9] => Parent Id
[10] => Country Code
[11] => Supplier Id
[12] => Supplier Name
[13] => Supplier Category
[14] => Supplier Sub Type
[15] => Currency
第二行也正确检索值(请注意空格和零是实际数据):
[1] => Array
(
[0] => 12345
[1] => John Smith
[2] => ABC Member
[3] => 123456
[4] => 12345678
[5] => Local
[6] => 1990-03-01 00:00:00
[7] => 1970-01-01 00:00:00
[8] => 123 Program
[9] => 98765
[10] => US
[11] => 123
[12] => ABC Tools
[13] => Manufacturer
[14] => XYZ
[15] => USD
我确信它与SimpleXLSX类有关,但我不知道如何解决它 - 我已尝试在课程中添加其他模式,如前一篇文章中所述,但这并没有改变任何事情:
const SCHEMA_REL_RELATIONSHIP = 'http://schemas.openxmlformats.org/package/2006/relationships';
const SCHEMA_REL_OFFICEDOCUMENT_RELATIONSHIP = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships';
const SCHEMA_REL_WORKSHEETRELATION = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet';
以下是我的代码,该文件在从FTP站点下载到本地驱动器后读取该文件: (注意:删除空白行,保存并将文件上传到FTP站点,下载并操作它按预期工作,所以我知道不是导致问题的FTP。)
我可以查找什么来确定为什么我无法在收到此文件时读取该文件?因为它是一个自动化过程,我不想手动保存文件。这个过程意味着每天运行。
function read_file($filename, $server_file)
{
//If the file can be read, load the array
if ( stristr($server_file, '.xlsx'))
{
if($file = SimpleXLSX::parse($filename))
{
?><pre><?php print_r($file->rows() ); ?></pre> <?php
}
else
{
echo SimpleXLSX::parse_error();
}
}
}
提前感谢有人提供的任何帮助!