Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PEAR电子表格Excel编写器数据限制_Php_Spreadsheet_Export To Excel_Pear_Writer - Fatal编程技术网

PHP PEAR电子表格Excel编写器数据限制

PHP PEAR电子表格Excel编写器数据限制,php,spreadsheet,export-to-excel,pear,writer,Php,Spreadsheet,Export To Excel,Pear,Writer,我对梨有一个问题,这个问题似乎很奇怪 我正在用php生成一个电子表格,在这里我循环几个段落来创建一个尺寸表。只要我在图表中使用很少的细节,脚本就会被执行,但似乎有一个限制。一旦超过这个数字,我就会收到一条致命的错误消息 这是我用于工作簿的代码: 需要_once'../Spreadsheet/Excel/Writer.php' $workbook = new Spreadsheet_Excel_Writer('sizecharts/'.$file.'.xls');

我对梨有一个问题,这个问题似乎很奇怪

我正在用php生成一个电子表格,在这里我循环几个段落来创建一个尺寸表。只要我在图表中使用很少的细节,脚本就会被执行,但似乎有一个限制。一旦超过这个数字,我就会收到一条致命的错误消息

这是我用于工作簿的代码:

需要_once'../Spreadsheet/Excel/Writer.php'

        $workbook = new Spreadsheet_Excel_Writer('sizecharts/'.$file.'.xls');

        $worksheet =& $workbook->addWorksheet('NL Worksheet '.$itemname);
        $workbook->setVersion(8);

        $format_top =& $workbook->addFormat();
        $format_top->setAlign('top');
        $format_top->setTextWrap(1);

        $format_center =& $workbook->addFormat();
        $format_center->setAlign('center');

        $format_heading1 =& $workbook->addFormat();
        $format_heading1->setAlign('center');
        $format_heading1->setBold(1);
        $format_heading1->setSize(16);

        $format_info =& $workbook->addFormat();
        $format_info->setAlign('center');
        $format_info->setBold(1);
        $format_info->setSize(12);

        $bold =& $workbook->addFormat();
        $bold->setBold(1);

        $details =& $workbook->addFormat();
        $details->setBorder(1);

        $details_header =& $workbook->addFormat();
        $details_header->setBold(1);
        $details_header->setBorder(1);

        $details_cell =& $workbook->addFormat();
        $details_cell->setBorder(1);
        $details_cell->setAlign('center');

        $details_cell_header =& $workbook->addFormat();
        $details_cell_header->setBold(1);
        $details_cell_header->setBorder(1);
        $details_cell_header->setAlign('center');

        $details_num =& $workbook->addFormat();
        $details_num->setBold(1);
        $details_num->setBorder(1);
        $details_num->setAlign('right');


        $worksheet->setMerge(1,0,1,$size_count-1);
        $worksheet->setMerge(3,0,3,$size_count-1);
        $worksheet->setMerge(5,0,5,$size_count-1);

        $worksheet->setInputEncoding('utf-8');
        $worksheet->write(1, 0, 'MYCOMPANY', $format_heading1);
        $worksheet->write(3, 0, '耐斯德克服饰(上海)有限公司', $format_heading1);
        $worksheet->write(5, 0, 'Measurements  '.$itemname, $format_info);

        $worksheet->setInputEncoding('ISO-8859-7');
        $worksheet->write(7, $size_count-2, 'File#:');
        $worksheet->write(7, $size_count-1, $file);

        $worksheet->write(8, 0, 'Date:');
        $worksheet->write(8, 1, $date);

        $worksheet->write(9, 0, 'Customer:');
        $worksheet->write(9, 1, $customer);

        $worksheet->write(10, 0, 'Item Type:');
        $worksheet->write(10, 1, $type);

        $worksheet->write(11, 0, 'Units:');
        $worksheet->write(11, 1, $unit);

        $worksheet->setColumn(0,0,10);
        $worksheet->setColumn(0,1,30);

        $worksheet->write(13, 0, '#',$details_num);
        $worksheet->write(13, 1, 'Details:',$details_header);




        for($k=1;$k<($size_count-1);$k++){

            $size_collect_xls   = $sizes_arr[$k];

            $worksheet->setInputEncoding('utf-8');  
            $worksheet->write(13,$k+1, $size_collect_xls,$details_cell_header);
            $worksheet->setInputEncoding('ISO-8859-7');

        }


        for($i=0;$i<$count;$i++){

            if(isset($_POST['details'][$i])){   

            $detail             = $_POST['details'][$i];    

            $worksheet->write(14+$i, 0, ($i+1).'.',$details_num);
            $worksheet->write(14+$i, 1, $detail,$details);

            $det_collect        = "";

                        for($k=1;$k<($size_count-1);$k++){


                            $key                = "det".$k;

                            $det_collect_val    = $_POST[$key][$i]; 

                            $worksheet->write(14+$i,$k+1, $det_collect_val,$details_cell);

                        }


            }

        }           


        // We still need to explicitly close the workbook
        $workbook->close();
        ?>
如果我将这一行与以下内容交换:

 $worksheet->setInputEncoding('utf-8');
我的错误消息更改为:

 <b>Fatal error</b>:  Call to undefined method PEAR_Error::setInputEncoding()
致命错误:调用未定义的方法PEAR\u error::setInputEncoding()
在这种情况下,错误报告编码而不是单元格有问题。这意味着命令没有问题。更大的问题在于生成的工作表中的数据量

那么,是否对插入excel工作表的数据量有任何限制?

这是不相关的

线路

$worksheet =& $workbook->addWorksheet('NL Worksheet '.$itemname);
可以返回“成功时对工作表对象的引用,失败时返回错误”(ref)。错误消息告诉您正在对PEAR_错误调用未定义的方法,这意味着您的调用失败

您需要在该行之后检查addWorksheet是否成功。从文档中获取的简单示例:

// Make sure the worksheet name is less than 31 characters
$worksheet =& $workbook->addWorksheet(substr('NL Worksheet '.$itemname, 0, 31));
if (PEAR::isError($worksheet)) {
    die($worksheet->getMessage());
}

好的,显示以下消息:Sheetname****************基本T恤必须是,然后它的意思是它所说的;)工作表名称太长。我更新了我的答案,以显示您需要做什么。我担心MS Excel的BIFF文件格式对工作表名称有31个字符的小限制,非常感谢。你救了我一天!
$worksheet =& $workbook->addWorksheet('NL Worksheet '.$itemname);
// Make sure the worksheet name is less than 31 characters
$worksheet =& $workbook->addWorksheet(substr('NL Worksheet '.$itemname, 0, 31));
if (PEAR::isError($worksheet)) {
    die($worksheet->getMessage());
}