标签: phpexcel

使用PHPExcel导出/导入CSV

您能否指导我或为我提供一些使用PHPExcel库执行CSV导出和导入的示例代码?

Excel导出和导入很好,但我也需要CSV导出/导入.我还有其他CSV导出和导入方法,但是也可以通过PHPExcel完成吗?

php mysql csv phpexcel

33
推荐指数
2
解决办法
8万
查看次数

如何将工作表的列数作为整数(28)而不是Excel-字母("AB")?

鉴于:

$this->objPHPExcelReader = PHPExcel_IOFactory::createReaderForFile($this->config['file']);
$this->objPHPExcelReader->setLoadSheetsOnly(array($this->config['worksheet']));
$this->objPHPExcelReader->setReadDataOnly(true);
$this->objPHPExcel = $this->objPHPExcelReader->load($this->config['file']);
Run Code Online (Sandbox Code Playgroud)

我可以迭代这样的行,但它很慢,即在3MB的Excel文件中,工作表有"EL"列,每行大约需要1秒:

foreach ($this->objPHPExcel->setActiveSheetIndex(0)->getRowIterator() as $row)
{
    $dataset = array();
    $cellIterator = $row->getCellIterator();
    $cellIterator->setIterateOnlyExistingCells(false);
    foreach ($cellIterator as $cell)
    {
        if (!is_null($cell))
        {
            $dataset[] = $cell->getCalculatedValue();
        }
    }
    $this->datasets[] = $dataset;
}
Run Code Online (Sandbox Code Playgroud)

当我像这样迭代时,它显着更快(在30秒内大约2000行),但我必须将字母例如"EL"转换为数字:

$highestColumm = $this->objPHPExcel->setActiveSheetIndex(0)->getHighestColumn(); // e.g. "EL"
$highestRow = $this->objPHPExcel->setActiveSheetIndex(0)->getHighestRow();

$number_of_columns = 150; // TODO: figure out how to get the number of cols as int
for ($row = 1; $row < $highestRow …
Run Code Online (Sandbox Code Playgroud)

php phpexcel

32
推荐指数
1
解决办法
6万
查看次数

PHPExcel列循环

如何进行基于Excel工作表列的循环?我发现(和使用过)WorksheetIterator,RowIterator和CellIterator但没有关于列.

php phpexcel

32
推荐指数
3
解决办法
7万
查看次数

无法删除缓冲区.没有要删除的缓冲区

我正在尝试从下面的代码生成扩展名为.xlsx的excel文件.我能够很好地下载文件但是当我用excel表打开它时,我收到以下警告错误.Excel无法打开文件'dindi.xlsx',因为文件格式或文件扩展名无效.确保文件未损坏且文件扩展名与文件格式匹配.当我用记事本打开它时,该文件出现以下错误:

注意:ob_end_clean()[ref.outcontrol]:无法删除缓冲区.没有要删除的缓冲区

以下是我正在尝试做的代码.

public function exportResults() {

        $this -> load -> database();
        $query = $this -> db -> query("
        SELECT * FROM farm LIMIT 10");
        $results = $query -> result_array();
        $objPHPExcel = new Excel();





        $objReader = PHPExcel_IOFactory::createReader('Excel2007');
        $objPHPExcel = $objReader->load('./files/farmdetails.xlsx');


        $objPHPExcel ->getActiveSheet()->setTitle('farmreport');

        $objPHPExcel -> setActiveSheetIndex(0);
        $i = 1;
        foreach ($results as $result) {

            $objPHPExcel -> getActiveSheet() -> SetCellValue('A' . $i, $result["name"]);
            $objPHPExcel -> getActiveSheet() -> SetCellValue('B' . $i, $result["dateofcontract"]);
            $objPHPExcel -> getActiveSheet() -> SetCellValue('C' . $i, $result["leasorname"]);
            $objPHPExcel -> getActiveSheet() …
Run Code Online (Sandbox Code Playgroud)

php codeigniter phpexcel

32
推荐指数
2
解决办法
4万
查看次数

如何使用PHPExcel打开Excel文件进​​行读写?

我正在使用PHPExcel库,我正在创建用于写入或读取的xls对象:

PHPExcel_IOFactory::createReaderForFile('file.xlsx')
PHPExcel_IOFactory::createWriter('Excel2007')

如何打开XLSX文件进行读写?

php phpexcel

31
推荐指数
1
解决办法
8万
查看次数

正确的字符串/数字格式从零开始?

我正在尝试使用PHP创建一个包含电话号码列表的文件.它工作正常但是如果电话号码从零开始,则从Excel文件中删除该数字.

有没有人知道如何正确设置格式,以便它保持原样?

php phpexcel

30
推荐指数
2
解决办法
6万
查看次数

如何使用PHPExcel库从excel获取日期

我正在尝试使用PHPExcel从excel获取Date.但我没有得到约会,我得到的字符串值不是1970年的秒数.

我试过的代码是

$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue());
Run Code Online (Sandbox Code Playgroud)

php date phpexcel

29
推荐指数
2
解决办法
4万
查看次数

如何PHPExcel设置自动列宽度

我正在使用PHPExcel导出数据以供下载.打开下载的文件时,如果单元格数量较大,则显示"#######"而不是值编号.我尝试setAutoSize()了每个列,然后调用,$sheet->calculateColumnWidths()但它仍然没有变化.我在这里看到calculateColumnWidths(),@ Mark Ba​​ker说"calculateColumnWidths()将值增加5%,以确保整个列适合".如果单元格中的数字长度超过5%,那么似乎已经解决了问题

更新 这是我自动调整列的功能:

   function autoFitColumnWidthToContent($sheet, $fromCol, $toCol) {
        if (empty($toCol) ) {//not defined the last column, set it the max one
            $toCol = $sheet->getColumnDimension($sheet->getHighestColumn())->getColumnIndex();
        }
        for($i = $fromCol; $i <= $toCol; $i++) {
            $sheet->getColumnDimension($i)->setAutoSize(true);
        }
        $sheet->calculateColumnWidths();
    }
Run Code Online (Sandbox Code Playgroud)

php autosize width phpexcel

28
推荐指数
1
解决办法
5万
查看次数

如何做边境外的phpexcel

我使用以下代码为所有边框

$BStyle = array(
  'borders' => array(
    'allborders' => array(
      'style' => PHPExcel_Style_Border::BORDER_THIN
    )
  )
);
Run Code Online (Sandbox Code Playgroud)

我在这里使用

$objPHPExcel->getActiveSheet()->getStyle('A8:L8')->applyFromArray($BStyle);
Run Code Online (Sandbox Code Playgroud)

但是我如何给出外边框如下面给出的屏幕

在此输入图像描述

php phpexcel

28
推荐指数
1
解决办法
4万
查看次数

如何使用PHPExcel从大型Excel文件(27MB +)中读取大型工作表?

我有大量的Excel工作表,我希望能够使用PHPExcel读入MySQL.

我正在使用最近的补丁,它允许您在不打开整个文件的情况下读取工作表.这样我就可以一次阅读一个工作表.

但是,一个Excel文件大27MB.我可以成功阅读第一个工作表,因为它很小,但第二个工作表是如此之大,以至于22:00启动进程的cron作业在上午8:00没有完成,工作表很简单.

是否有任何方法可以逐行读取工作表,例如:

$inputFileType = 'Excel2007';
$inputFileName = 'big_file.xlsx';
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$worksheetNames = $objReader->listWorksheetNames($inputFileName);

foreach ($worksheetNames as $sheetName) {
    //BELOW IS "WISH CODE":
    foreach($row = 1; $row <=$max_rows; $row+= 100) {
        $dataset = $objReader->getWorksheetWithRows($row, $row+100);
        save_dataset_to_database($dataset);
    }
}
Run Code Online (Sandbox Code Playgroud)

附录

@mark,我使用您发布的代码创建以下示例:

function readRowsFromWorksheet() {

    $file_name = htmlentities($_POST['file_name']);
    $file_type = htmlentities($_POST['file_type']);

    echo 'Read rows from worksheet:<br />';
    debug_log('----------start');
    $objReader = PHPExcel_IOFactory::createReader($file_type);
    $chunkSize = 20;
    $chunkFilter = new ChunkReadFilter();
    $objReader->setReadFilter($chunkFilter);

    for ($startRow = 2; $startRow <= …
Run Code Online (Sandbox Code Playgroud)

php phpexcel

27
推荐指数
2
解决办法
5万
查看次数

标签 统计

php ×10

phpexcel ×10

autosize ×1

codeigniter ×1

csv ×1

date ×1

mysql ×1

width ×1