Mysql 对.csv和.xlsx数据的内存高效读写
我希望实现对.xlsx/.csv文件的高效读写 我目前正在使用phpExcel,在处理大文件时遇到问题。已知问题 我找到了以下图书馆供阅读: 这似乎会奏效 为了当前写入文件,我创建了一个数组,然后循环该数组以输出文件。这就是它使用大量内存的原因吗?当使用CodeIgniter从mysql数据库获取数据时,在编写csv/xlsx时,最好的方法是什么 这就是我现在所做的:Mysql 对.csv和.xlsx数据的内存高效读写,mysql,excel,csv,Mysql,Excel,Csv,我希望实现对.xlsx/.csv文件的高效读写 我目前正在使用phpExcel,在处理大文件时遇到问题。已知问题 我找到了以下图书馆供阅读: 这似乎会奏效 为了当前写入文件,我创建了一个数组,然后循环该数组以输出文件。这就是它使用大量内存的原因吗?当使用CodeIgniter从mysql数据库获取数据时,在编写csv/xlsx时,最好的方法是什么 这就是我现在所做的: /* added for excel expert */ function excel_export() { $data
/* added for excel expert */
function excel_export() {
$data = $this->Customer->get_all($this->Customer->count_all())->result_object();
$this->load->helper('report');
$rows = array();
$header_row = $this->_excel_get_header_row();
$header_row[] = lang('customers_customer_id');
$rows[] = $header_row;
foreach ($data as $r) {
$row = array(
$r->first_name,
$r->last_name,
$r->email,
$r->phone_number,
$r->address_1,
$r->address_2,
$r->city,
$r->state,
$r->zip,
$r->country,
$r->comments,
$r->account_number,
$r->taxable ? 'y' : '',
$r->company_name,
$r->person_id
);
$rows[] = $row;
}
$content = array_to_spreadsheet($rows);
force_download('customers_export.'.($this->config->item('spreadsheet_format') == 'XLSX' ? 'xlsx' : 'csv'), $content);
exit;
}
function array_to_spreadsheet($arr)
{
$CI =& get_instance();
$objPHPExcel = new PHPExcel();
//Default all cells to text
$objPHPExcel->getDefaultStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
for($k = 0;$k < count($arr);$k++)
{
for($j = 0;$j < count($arr[$k]); $j++)
{
$objPHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow($j, $k+1, $arr[$k][$j]);
}
}
if ($CI->config->item('spreadsheet_format') == 'XLSX')
{
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
}
else
{
$objWriter = new PHPExcel_Writer_CSV($objPHPExcel);
}
ob_start();
$objWriter->save('php://output');
$excelOutput = ob_get_clean();
return $excelOutput;
}
你说的是什么尺寸?100MB?4GB?如果您谈论的是GBs,它显然会很慢,并且存在许多可能的问题,其中之一是您有IO问题。如果在Linux上,您可以尝试ionice。是不是在某一点之后创建速度变慢的问题?1-5 mb是我正在处理的文件大小