Tôi có ứng dụng php
nơi tôi muốn đọc dữ liệu từ excel, Chèn vào cơ sở dữ liệu và sau đó tạo báo cáo pdf cho người dùng cụ thể. Tôi đã tìm kiếm trên internet rất nhiều nhưng không có gì cụ thể về cả hai thứ. nếu ai đó có thể cung cấp một hướng dẫn hoặc một cái gì đó, đó sẽ là một trợ giúp thực sự.cách sử dụng phpexcel để đọc dữ liệu và chèn vào cơ sở dữ liệu?
Trả lời
Sử dụng thư viện PHPExcel để đọc một tập tin Excel và chuyển dữ liệu vào một cơ sở dữ liệu
// Include PHPExcel_IOFactory
include 'PHPExcel/IOFactory.php';
$inputFileName = './sampleData/example1.xls';
// Read your Excel workbook
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
// Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
// Loop through each row of the worksheet in turn
for ($row = 1; $row <= $highestRow; $row++){
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
NULL,
TRUE,
FALSE);
// Insert row data array into your database of choice here
}
Bất cứ điều gì hơn trở nên rất phụ thuộc vào cơ sở dữ liệu của bạn, và làm thế nào bạn muốn dữ liệu có cấu trúc trong đó
cảm ơn bạn. nó đã làm việc. – coder101
tôi đã thử nghiệm ngày hôm nay với v 1.7.9, 2013-06-02 và nó không hoạt động. tôi đã phải thay thế '$ highestColumn = PHPExcel_Cell :: columnIndexFromString ($ sheet-> getHighestColumn());' với '$ sheet-> getHighestColumn()' đơn giản. bạn có thể có một lỗi trong mã khi bạn cố gắng lấy chỉ mục cột từ chuỗi - NHƯNG cố gắng truy cập nó qua $ highColumn. $ row trong vòng lặp (mà sẽ chỉ cung cấp một số nguyên nối lạ nếu bạn không sử dụng ký tự) – user151496
Cột cao nhất phải là một giá trị cột thư; vì vậy bạn đúng - điều này chỉ đơn giản là nên đặt '$ highColumn = $ sheet-> getHighestColumn();' thay vì '$ highColumn = PHPExcel_Cell :: columnIndexFromString ($ sheet-> getHighestColumn());' Tôi không thể sai được ' –
Trong để đọc dữ liệu từ microsoft excel 2007 bởi codeigniter, chỉ cần tạo một hàm trợ giúp excel_helper.php và thêm vào sau trong:
require_once APPPATH.'libraries/phpexcel/PHPExcel.php';
require_once APPPATH.'libraries/phpexcel/PHPExcel/IOFactory.php';
in controller add the following code to read spread sheet by active sheet
//initialize php excel first
ob_end_clean();
//define cachemethod
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array('memoryCacheSize' => '20MB');
//set php excel settings
PHPExcel_Settings::setCacheStorageMethod(
$cacheMethod,$cacheSettings
);
$arrayLabel = array("A","B","C","D","E");
//=== set object reader
$objectReader = PHPExcel_IOFactory::createReader('Excel2007');
$objectReader->setReadDataOnly(true);
$objPHPExcel = $objectReader->load("./forms/test.xlsx");
$objWorksheet = $objPHPExcel->setActiveSheetIndexbyName('Sheet1');
$starting = 1;
$end = 3;
for($i = $starting;$i<=$end; $i++)
{
for($j=0;$j<count($arrayLabel);$j++)
{
//== display each cell value
echo $objWorksheet->getCell($arrayLabel[$j].$i)->getValue();
}
}
//or dump data
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
var_dump($sheetData);
//see also the following link
http://blog.mayflower.de/561-Import-and-export-data-using-PHPExcel.html
----------- import in another style around 5000 records ------
$this->benchmark->mark('code_start');
//=== change php ini limits. =====
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array(' memoryCacheSize ' => '50MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
//==== create excel object of reader
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
//$objReader->setReadDataOnly(true);
//==== load forms tashkil where the file exists
$objPHPExcel = $objReader->load("./forms/5000records.xlsx");
//==== set active sheet to read data
$worksheet = $objPHPExcel->setActiveSheetIndexbyName('Sheet1');
$highestRow = $worksheet->getHighestRow(); // e.g. 10
$highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
$worksheetTitle = $worksheet->getTitle();
echo "<br>The worksheet ".$worksheetTitle." has ";
echo $nrColumns . ' columns (A-' . $highestColumn . ') ';
echo ' and ' . $highestRow . ' row.';
echo '<br>Data: <table border="1"><tr>';
//----- loop from all rows -----
for ($row = 1; $row <= $highestRow; ++ $row)
{
echo '<tr>';
echo "<td>".$row."</td>";
//--- read each excel column for each row ----
for ($col = 0; $col < $highestColumnIndex; ++ $col)
{
if($row == 1)
{
// show column name with the title
//----- get value ----
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val = $cell->getValue();
//$dataType = PHPExcel_Cell_DataType::dataTypeForValue($val);
echo '<td>' . $val ."(".$row." X ".$col.")".'</td>';
}
else
{
if($col == 9)
{
//----- get value ----
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val = $cell->getValue();
//$dataType = PHPExcel_Cell_DataType::dataTypeForValue($val);
echo '<td>zone ' . $val .'</td>';
}
else if($col == 13)
{
$date = PHPExcel_Shared_Date::ExcelToPHPObject($worksheet->getCellByColumnAndRow($col, $row)->getValue())->format('Y-m-d');
echo '<td>' .dateprovider($date,'dr') .'</td>';
}
else
{
//----- get value ----
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val = $cell->getValue();
//$dataType = PHPExcel_Cell_DataType::dataTypeForValue($val);
echo '<td>' . $val .'</td>';
}
}
}
echo '</tr>';
}
echo '</table>';
$this->benchmark->mark('code_end');
echo "Total time:".$this->benchmark->elapsed_time('code_start', 'code_end');
$this->load->view("error");
if($query)
{
// try to export to excel the whole data ---
//initialize php excel first
ob_end_clean();
//--- create php excel object ---
$objPHPExcel = new PHPExcel();
//define cachemethod
ini_set('memory_limit', '3500M');
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array('memoryCacheSize' => '800MB');
//set php excel settings
PHPExcel_Settings::setCacheStorageMethod(
$cacheMethod,$cacheSettings
);
$objPHPExcel->getProperties()->setTitle("export")->setDescription("none");
$objPHPExcel->setActiveSheetIndex(0);
// Field names in the first row
$fields = $query->list_fields();
$col = 0;
foreach ($fields as $field)
{
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 1, $field);
$col++;
}
// Fetching the table data
$row = 2;
foreach($query->result() as $data)
{
$col = 0;
foreach ($fields as $field)
{
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $data->$field);
$col++;
}
$row++;
}
$objPHPExcel->setActiveSheetIndex(0);
//redirect to cleint browser
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename=Provinces.xlsx');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
}
cảm ơn người đàn ông. Trên thực tế tôi đăng vấn đề này vài tháng trước và đã có một workaround rằng thời gian chính nó. nhưng tôi chắc chắn sẽ sử dụng đề xuất của bạn lần sau tôi làm việc trên chức năng này. cảm ơn một lần nữa. – coder101
'truy vấn' là gì – shorif2000
Dường như đối tượng db –
if($this->mng_auth->get_language()=='en')
{
$excel->getActiveSheet()->setRightToLeft(false);
}
else
{
$excel->getActiveSheet()->setRightToLeft(true);
}
$styleArray = array(
'borders' => array(
'allborders' => array(
'style' => PHPExcel_Style_Border::BORDER_THIN,
'color' => array('argb' => '00000000'),
),
),
);
//SET property
$objPHPExcel->getActiveSheet()->getStyle('A1:M10001')->applyFromArray($styleArray);
$objPHPExcel->getActiveSheet()->getStyle('A1:M10001')->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle('A1:'.chr(65+count($fields)-1).$query->num_rows())->applyFromArray($styleArray);
$objPHPExcel->getActiveSheet()->getStyle('A1:'.chr(65+count($fields)-1).$query->num_rows())->getAlignment()->setWrapText(true);
Đây là một câu trả lời rất gần đây cho câu hỏi này từ file: 07reader.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
date_default_timezone_set('Europe/London');
/** Include PHPExcel_IOFactory */
require_once '../Classes/PHPExcel/IOFactory.php';
if (!file_exists("05featuredemo.xlsx")) {
exit("Please run 05featuredemo.php first." . EOL);
}
echo date('H:i:s') , " Load from Excel2007 file" , EOL;
$callStartTime = microtime(true);
$objPHPExcel = PHPExcel_IOFactory::load("05featuredemo.xlsx");
$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;
echo 'Call time to read Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL;
// Echo memory usage
echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true)/1024/1024) , " MB" , EOL;
echo date('H:i:s') , " Write to Excel2007 format" , EOL;
$callStartTime = microtime(true);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;
echo date('H:i:s') , " File written to " , str_replace('.php', '.xlsx', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL;
// Echo memory usage
echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true)/1024/1024) , " MB" , EOL;
// Echo memory peak usage
echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true)/1024/1024) , " MB" , EOL;
// Echo done
echo date('H:i:s') , " Done writing file" , EOL;
echo 'File has been created in ' , getcwd() , EOL;
Sử dụng thư viện PHPExcel, đoạn code sau sẽ làm.
require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true); //optional
$objPHPExcel = $objReader->load(__DIR__.'/YourExcelFile.xlsx');
$objWorksheet = $objPHPExcel->getActiveSheet();
$i=1;
foreach ($objWorksheet->getRowIterator() as $row) {
$column_A_Value = $objPHPExcel->getActiveSheet()->getCell("A$i")->getValue();//column A
//you can add your own columns B, C, D etc.
//inset $column_A_Value value in DB query here
$i++;
}
- 1. Chèn vào cơ sở dữ liệu
- 2. sqlite3 chèn và đọc dữ liệu BLOB trong cơ sở dữ liệu
- 3. Chèn rất nhiều dữ liệu vào cơ sở dữ liệu trong các chèn rất nhỏ
- 4. Làm cách nào để chèn bản ghi từ cơ sở dữ liệu mongo này vào cơ sở dữ liệu khác?
- 5. CodeIgniter Cơ sở dữ liệu Chèn Không
- 6. Làm thế nào để chèn dữ liệu vào cơ sở dữ liệu SQLite trong android?
- 7. Cách chèn dữ liệu vào OpenTSDB (Cơ sở dữ liệu chuỗi thời gian)
- 8. Chèn ngày/giờ vào cơ sở dữ liệu Access
- 9. Cách lấy dữ liệu từ cơ sở dữ liệu Parse.com
- 10. Chèn blob vào cơ sở dữ liệu oracle với C#
- 11. LINQ Truy vấn để chèn dữ liệu vào cơ sở dữ liệu
- 12. Làm thế nào để chèn dữ liệu mẫu vào bảng cơ sở dữ liệu MySQL
- 13. SQLite: cơ sở dữ liệu chỉ đọc
- 14. Chuyển dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác
- 15. Cách sử dụng nhiều cơ sở dữ liệu trong ứng dụng Rails Sử dụng cơ sở dữ liệu
- 16. Python chèn mảng numpy vào cơ sở dữ liệu sqlite3
- 17. Chèn vào nhiều bảng cơ sở dữ liệu bằng cách sử dụng LINQ, ASP.NET MVC
- 18. Chèn hình ảnh vào cơ sở dữ liệu
- 19. Chèn dữ liệu vào một bảng trong cơ sở dữ liệu Wordpress bằng Wordpress $ wpdb
- 20. Sự cố Chèn dữ liệu vào cơ sở dữ liệu MS Access bằng ADO qua Python
- 21. Chèn danh sách vào cơ sở dữ liệu của tôi bằng cách sử dụng Python
- 22. Một cơ sở dữ liệu và nhiều cơ sở dữ liệu
- 23. từ cơ sở dữ liệu sử dụng?
- 24. sqlite3: cơ sở dữ liệu chính chỉ đọc và ATTACH
- 25. Cách mở cơ sở dữ liệu SQL Compact chỉ đọc
- 26. Sử dụng bảng cơ sở dữ liệu làm hàng đợi
- 27. Cách di chuyển dữ liệu và cài đặt từ cơ sở dữ liệu này sang cơ sở dữ liệu khác?
- 28. Kết hợp nhiều cơ sở dữ liệu vào một cơ sở dữ liệu đơn
- 29. Sử dụng mysqldump và người dùng cơ sở dữ liệu
- 30. Làm thế nào để đọc dữ liệu từ cơ sở dữ liệu SQLite?
Bạn có đang xuất dữ liệu excel của mình sang CSV không? Có dữ liệu nào trong dữ liệu của bạn loại bỏ CSV dưới dạng tùy chọn không? –
Bạn đã xem thư viện PHPExcel chưa? –
@MarkBaker tôi chưa thấy thư viện, mặc dù tôi đã cố gắng kiểm tra tệp tham chiếu hàm nhưng quá lớn để xem xét vì tôi phải làm điều này hoạt động càng sớm càng tốt ngoài các phần khác của dự án. – coder101