#php #mysql #excel #codeigniter #export-to-excel
#php #mysql #excel #codeigniter #экспорт в excel
Вопрос:
Я работаю над проектом, который требует экспорта данных из базы данных MYSQL в зависимости от множества условий. Я имею в виду это:
Это мой исходный код:
public function exportExcelData($records)
{
$heading = false;
if (!empty($records))
foreach ($records as $row) {
if (!$heading) {
// display field/column names as a first row
echo implode("t", array_keys($row)) . "n";
$heading = true;
}
echo implode("t", ($row)) . "n";
}
}
public function fetchDataFromTable()
{
$query =$this->db->get('one_piece_characters'); // fetch Data from table
$allData = $query->result_array(); // this will return all data into array
$dataToExports = [];
foreach ($allData as $data) {
$arrangeData['Charater Name'] = $data['name'];
$arrangeData['Charater Profile'] = $data['profile'];
$arrangeData['Charater Desc'] = $data['description'];
$dataToExports[] = $arrangeData;
}
// set header
$filename = "dataToExport.xls";
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename="$filename"");
$this->exportExcelData($dataToExports);
}
Если я использую его без какого-либо предложения where, он выдает всю таблицу целиком.
Если я использую только одно предложение where, оно работает хорошо.
Но, если я использую несколько условий where. это дает мне пустой лист Excel.
Есть ли у кого-нибудь идеи относительно того, как заставить его работать с несколькими условиями where?
Комментарии:
1. Вы уверены, что в вашей базе данных есть какие-либо данные, которые соответствуют вашим
multiple conditions
?2. покажите ваше условие where?
3. Попробуйте echo
$this->db->last_query()
с вашими несколькими условиями и выполните тот же запрос в вашейdatabase
phpmyadmin
редакции и проверьте, получаете ли вы какие-либо результаты4. @Zeeshan запрос выглядит следующим
select * from dept where deptid=5 and deptname="motor"
образом, и он не возвращает никаких данных. Это дает пустой лист Excel5. Вы пытались запустить тот же запрос в базе данных напрямую, и если вы можете получить какой-либо результат
Ответ №1:
Попробуйте использовать этот код в файле модели:
function createcsv(){
$this->load->dbutil();
$this->load->helper('file');
$this->load->helper('download');
$delimiter = ",";
$newline = "rn";
$filename = "filename.csv";
$query = "SELECT * FROM YourTable"; //USE HERE YOUR QUERY
$result = $this->db->query($query);
$data = $this->dbutil->csv_from_result($result, $delimiter, $newline);
force_download($filename, $data);
}
Ответ №2:
// ecport список содержимого в csv ,
public function cnt_explode(){
$csvData[] =array( "Name", "Email Id","Mobile No.","Event", "City","location","No of guest","Event Date","Budget",
"Venue Type","Food","Drink","Description","Date");
$data = $this->contact_model->get_contact(NULL);
foreach($data as $cnt){
$csvData[]=array(
$cnt->name ,$cnt->email, $cnt->mobile_no, $cnt->event, $cnt->city, $cnt->location, $cnt->no_guest,$cnt->event_date,$cnt->budget, $cnt->venue_type,
$cnt->food, $cnt->drink, $cnt->description,$cnt->created_on,
);
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=venuexpo_".time().".csv");
header("Content-Transfer-Encoding: binary");
$df = fopen("php://output", 'w');
array_walk($csvData, function($row) use ($df) {
fputcsv($df, $row);
});
fclose($df);
}
///------------ downlode csv done --------------