Php 如何调整单元格宽度,使其不会在电子表格\u Excel\u Writer中剪切单词

Php 如何调整单元格宽度,使其不会在电子表格\u Excel\u Writer中剪切单词,php,excel,pear,export-to-excel,Php,Excel,Pear,Export To Excel,我正在尝试使用Pear附带的电子表格Excel书写器创建Excel工作表。 工作表已创建,一切正常,但“我的文字”正在被剪切,单元格未调整宽度以容纳完整的文字。 我尝试用Office 2007打开它。 为此,我必须在电子表格\u Excel\u Writer\u Format对象中输入哪些值?我不相信你可以用S\u E\u W实现这一点。如果它在列/行宽度/高度方面与Excel的“自动调整”功能相当,那就太好了,但是它没有。你只能用$worksheet->setColumn()将列设置为特定的宽

我正在尝试使用Pear附带的电子表格Excel书写器创建Excel工作表。
工作表已创建,一切正常,但“我的文字”正在被剪切,单元格未调整宽度以容纳完整的文字。
我尝试用Office 2007打开它。

为此,我必须在电子表格\u Excel\u Writer\u Format对象中输入哪些值?

我不相信你可以用S\u E\u W实现这一点。如果它在列/行宽度/高度方面与Excel的“自动调整”功能相当,那就太好了,但是它没有。你只能用
$worksheet->setColumn()
将列设置为特定的宽度


您可能需要调查切换到。它仍在积极开发中,支持最新的Excel文件格式以及更完整的API。S_E_W基本上已经死在水里了,现在应该被视为弃置软件。

我不相信你能用S_E_W做到这一点。如果它在列/行宽度/高度方面有Excel的“自动调整”功能,那就太好了,但它没有。你只能用
$worksheet->setColumn()
将列设置为特定的宽度


您可能需要调查切换到。它仍在积极开发中,支持最新的Excel文件格式以及更完整的API。S_E_W基本上死在水里了,现在应该被视为弃置品。

我还需要在
电子表格\u Excel\u Writer
中自动调整行高。显然,在工作表的开头(高度无自动调整)或末尾(高度有自动调整)设置
“工作表::保护(字符串$password)”
标志会有所不同

我还需要在
电子表格\u Excel\u Writer
中自动调整行高。显然,在工作表的开头(高度无自动调整)或末尾(高度有自动调整)设置
“工作表::保护(字符串$password)”
标志会有所不同

我有一个解决办法

$columns = 'NOMBRE,APELLIDO,CEDULA';
$arrayColumns = array('NOMBRE','APELLIDO','CEDULA');
$format = $report->workbook->addFormat(array('Align' => 'left', 'size' => 10, 'Color' => 0));
    $col = 2;
    $row = 5;

                foreach($arrayColumns as $columnName){
                    $report->worksheet->write($row, $col, $columnName, $format);
                    $arrayColumnsWidth[$col] = strlen($columnName);
                    $col++;
}


$sql = "SELECT $columns 
                    FROM table" ;   
            $objConnectionSQL->prepareSql($sql);
            $rs = $objConnectionSQL->executeQuery();


$row++;//it brings me to the next row
            while ($data = $objConnectionSQL->getRows($rs)) {
                $col = 2;
                foreach($arrayColumns as $columnName){
                    $report->worksheet->write($row, $col, $data[$columnName], $format);
                    if($arrayColumnsWidth[$col] < strlen($data[$columnName])){
                        $arrayColumnsWidth[$col] = strlen($data[$columnName]);
                    }
                $col++;
                }
                $row++;
            }

foreach($arrayColumnsWidth as $keyCol => $valWidth){
                $this->worksheet->setColumn($keyCol,$keyCol,floor($valWidth));
        }
$columns='NOMBRE,APELLIDO,CEDULA';
$arrayColumns=array('NOMBRE'、'APELLIDO'、'CEDULA');
$format=$report->工作簿->addFormat(数组('Align'=>'left','size'=>10','Color'=>0));
$col=2;
$row=5;
foreach($arrayColumns作为$columnName){
$report->worksheet->write($row,$col,$columnName,$format);
$arrayColumnsWidth[$col]=strlen($columnName);
$col++;
}
$sql=“选择$columns
“从表中”;
$objConnectionSQL->prepareSql($sql);
$rs=$objConnectionSQL->executeQuery();
$row++//它把我带到下一排
而($data=$objConnectionSQL->getRows($rs)){
$col=2;
foreach($arrayColumns作为$columnName){
$report->worksheet->write($row,$col,$data[$columnName],$format);
if($arrayColumnsWidth[$col]$valWidth){
$this->worksheet->setColumn($keyCol,$keyCol,floor($valWidth));
}
刚开始的时候有点复杂,但现在我的方法是在每一列上动态设置宽度。
我希望它能帮助别人。

我有一个解决办法

$columns = 'NOMBRE,APELLIDO,CEDULA';
$arrayColumns = array('NOMBRE','APELLIDO','CEDULA');
$format = $report->workbook->addFormat(array('Align' => 'left', 'size' => 10, 'Color' => 0));
    $col = 2;
    $row = 5;

                foreach($arrayColumns as $columnName){
                    $report->worksheet->write($row, $col, $columnName, $format);
                    $arrayColumnsWidth[$col] = strlen($columnName);
                    $col++;
}


$sql = "SELECT $columns 
                    FROM table" ;   
            $objConnectionSQL->prepareSql($sql);
            $rs = $objConnectionSQL->executeQuery();


$row++;//it brings me to the next row
            while ($data = $objConnectionSQL->getRows($rs)) {
                $col = 2;
                foreach($arrayColumns as $columnName){
                    $report->worksheet->write($row, $col, $data[$columnName], $format);
                    if($arrayColumnsWidth[$col] < strlen($data[$columnName])){
                        $arrayColumnsWidth[$col] = strlen($data[$columnName]);
                    }
                $col++;
                }
                $row++;
            }

foreach($arrayColumnsWidth as $keyCol => $valWidth){
                $this->worksheet->setColumn($keyCol,$keyCol,floor($valWidth));
        }
$columns='NOMBRE,APELLIDO,CEDULA';
$arrayColumns=array('NOMBRE'、'APELLIDO'、'CEDULA');
$format=$report->工作簿->addFormat(数组('Align'=>'left','size'=>10','Color'=>0));
$col=2;
$row=5;
foreach($arrayColumns作为$columnName){
$report->worksheet->write($row,$col,$columnName,$format);
$arrayColumnsWidth[$col]=strlen($columnName);
$col++;
}
$sql=“选择$columns
“从表中”;
$objConnectionSQL->prepareSql($sql);
$rs=$objConnectionSQL->executeQuery();
$row++//它把我带到下一排
而($data=$objConnectionSQL->getRows($rs)){
$col=2;
foreach($arrayColumns作为$columnName){
$report->worksheet->write($row,$col,$data[$columnName],$format);
if($arrayColumnsWidth[$col]$valWidth){
$this->worksheet->setColumn($keyCol,$keyCol,floor($valWidth));
}
刚开始的时候有点复杂,但现在我的方法是在每一列上动态设置宽度。
我希望它能对其他人有所帮助。

PHPExcel确实支持对列和行以及定义的宽度和高度进行自动调整。感谢对PHPExcel的参考,我将在我(庞大)项目的下一个重构周期中将我的代码转换为该版本。同时,我使用了您建议的方法,在填写工作表中的所有数据后,计算每列的最大宽度,并在最后应用它。PHPExcel确实支持对列和行以及定义的宽度和高度进行自动调整。感谢PHPExcel的参考,我将在我的(巨大的)项目的下一个重构周期中把我的代码转换成那样。同时,我使用了您建议的方法,计算每列的最大宽度,并在工作表中填充所有数据后在最后应用它。新的excel和类似excel的软件知道如何使用纯HTML。今天我把所有的东西都放在HTML中,让Excell来完成繁重的工作。我的生活变得如此美好…新的excel,类似excel的软件知道如何使用纯HTML。今天我把所有的东西都放进了HTML