วิธีการส่งออกไปยัง Excel จาก PHP วิธีง่ายๆ ในการถ่ายโอนข้อมูลแบบตารางจาก PHP ไปยัง Excel ส่งออกข้อมูลจาก MySQL ไปยัง Excel ใน PHP

.
วิธีการนำเสนอในบทความของคุณนั้นง่ายมาก แต่คุณไม่สามารถแน่ใจได้ว่ามันฉลาด
ไม่มีวิธีอื่นในการถ่ายโอนข้อมูลแบบตารางจาก PHP ไปยัง Excel ฉันจะอธิบายวิธีที่ฉันพบว่าเป็นวิธีที่ง่ายและใช้งานได้ดีที่สุด จำเป็นอย่างยิ่งที่จะต้องทราบว่าฉันไม่ได้พูดถึงการสร้างไฟล์ xls แต่เป็นการคัดลอกข้อมูลสำหรับ ช่วย Excelดังนั้น หากคุณไม่รู้จักโปรแกรมเมอร์ อย่าจำข้อความนั้น

ขั้นแรก สิ่งที่จำเป็นคือต้องกระจาย - ฝ่ายเราส่งสคริปต์ที่สร้างหัวข้อที่ไม่เหมาะสม:
ส่วนหัว ("Pragma: สาธารณะ");
ส่วนหัว ("หมดอายุ: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
ส่วนหัว ("การควบคุมแคช: ส่วนตัว", เท็จ);
header("Content-Type: application/x-msexcel");
header("Content-Disposition: attachment; filename=\"" . iconv("UTF-8", "CP1251", $object->getFileName()) . "\";");
ส่วนหัว ("การเข้ารหัสการถ่ายโอนเนื้อหา: ไบนารี");
header("เนื้อหา-ความยาว: " . $object->getFileSize());

$object – วัตถุทรงกลมในสุญญากาศ ซึ่งชนิดของ skin reader ถูกใช้งานในลักษณะที่เหมาะสมกว่า การกำหนดชื่อที่แตกต่างกันของ getFileName() และ getFileSize() ที่นี่คุณสามารถเห็นความแตกต่างที่ไม่ชัดเจน (บางอย่างสำหรับผู้ที่คาดเดาเกี่ยวกับมัน) - getFileName () คุณสามารถเปลี่ยนชื่อไฟล์ได้อย่างชัดเจน แต่ถ้าคุณต้องการให้เบราว์เซอร์วางเนื้อหาใน Excel คุณสามารถขยายไฟล์ได้ xls .
ฉันยังไม่ได้ค้นพบอะไรใหม่ ๆ ทุกอย่างถูกประดิษฐ์ขึ้นก่อนฉัน vtim เช่นเดียวกับที่จะอธิบายด้านล่าง
เนื่องจาก bulo ถูกกำหนดให้กับความคิดเห็นก่อนสัญกรณ์ Excel จึงฉลาดกว่าเกี่ยวกับ XML เอล สิ่งที่สำคัญที่สุด อาจจะเหมือนกันทั้งหมด ไม่ใช่ในความเร็ว แต่เป็นไปได้อย่างมากมาย ฉันจะไม่หลงทางในตาข่าย แต่ฉันจะทำบั้นท้ายธรรมดาและบังคับ คำอธิบายรายงานแท็กทั้งหมด

ต่อจากนี้ไป เมื่อสร้างหัวข้อขึ้นมา เราจำเป็นต้องให้ข้อมูลที่ถูกต้อง ฉันเรียกการสร้างตารางในวิธี okremy:
echo $object->getContent();

และฉันสร้างตารางสำหรับความช่วยเหลือจาก Smarty:

(foreach from=$data.header item=caption) ($caption.columnName)(/แต่ละ)(foreach from=$data.content item=row) (foreach from=$row item=col) ($โคล)(/แต่ละ)(/แต่ละ)

ดังที่คุณเห็นจากโค้ด เทมเพลตจะถูกส่งผ่าน $data array เพื่อแทนที่สองอาร์เรย์ - แถวส่วนหัวของตารางและบรรทัดข้อมูล
Warto หมายความว่าการใช้เทมเพลตเอ็นจิ้นสำหรับการสร้าง XML เท่านั้นและ XML สามารถประมวลผลได้โดยไม่ต้องใช้วิธีอื่น สำหรับการสร้าง XML ประเภทใดประเภทหนึ่งของฉัน มันเป็นเพียงข้อดีเล็กน้อยสำหรับโครงการที่ยอดเยี่ยม ซึ่งคุณไม่สามารถทำได้หากไม่มีเครื่องมือเทมเพลต

ตัวอย่างเช่น ฉันจะสร้างตารางที่ง่ายที่สุด สำหรับ bazhanya คุณสามารถจัดการแอตทริบิวต์จำนวนมากขึ้นได้ เป็นสิ่งสำคัญโดยเฉพาะอย่างยิ่ง เนื่องจากเป็นสิ่งสำคัญ ที่ไม่จำเป็นต้องใช้ไลบรารีของบุคคลที่สามสำหรับการนำไปใช้งาน
คำอธิบายของวิธีการkіlkarokіv pratsyuєในโครงการเดียวและ zhden koristuvach dosіโดยไม่สงสัยว่าข้อมูลที่กำลังมองหาไม่ใช่เอกสาร MS Office

สามารถอ่านรายงานเกี่ยวกับโครงสร้างของ XML ซึ่งนำเสนอใน MS Excel ได้ใน

ที่ bagats กับหุ่นยนต์ PHP ที่ลิงก์กับ MySQL vinikaєความต้องการเช่นการส่งออกข้อมูลจากฐานในรูปแบบ xls เพื่อให้ผู้ที่ต้องการข้อมูลในการประมวลผล โปรแกรม Excelมิฉะนั้น ก็เป็นเพียงสำหรับ koristuvachas ที่จะประหลาดใจกับข้อมูลอย่างมีเล่ห์เหลี่ยม ไม่นานมานี้ ฉันมีความต้องการไวน์มาก และวันนี้ฉันจะบอกคุณว่าทำอย่างไรจึงจะถูกต้อง

ฉันจะบอกคุณอีกครั้งว่าจะทำอย่างไร ยกโทษให้ฉัน แต่วันนี้พวกเขาจะสบายดี

สำหรับ cob ฉันจะกำหนดก้นของไฟล์ xls สุดท้ายในโปรแกรม Excel มุมมองจะมีลักษณะดังนี้:

ไม่เช่นนั้นดูเหมือนว่ารูปภาพสไตล์ทุกวันไม่มีอะไรชัดเจนเพียงแค่ส่วนหัวของคอลัมน์และข้อมูลเท่านั้น

ก่อนหน้านั้น ตัวฉันเองมาถึงตัวเลือกที่มีชีวิตชีวา ฉันพยายามสร้างรูปแบบ csv แต่มันออกมาค่อนข้างงุ่มง่าม จากนั้นฉันพยายามวาดตารางและบันทึกด้วยส่วนขยาย xls ดังนั้นจึงกลายเป็นเหมือนnіsenіtnitsa วิธีการที่ฉันจะอธิบายทันทีในอำนาจของฉัน และฉันจะแบ่งปันกับคุณทันที

ในเบื้องต้น ผมจะชี้ให้เห็นโค้ดทั้งหมด ซึ่งผมได้แสดงความเห็นไว้มากที่สุดเท่าที่จะมากได้ คุณสามารถดูและบันทึกด้วยนามสกุล php แล้วลองใช้งานได้ เพียงอย่าลืมตั้งค่าการเชื่อมต่อกับฐานข้อมูล .

ส่งออกข้อมูลจาก MySQL ไปยัง Excel ใน PHP

และถ้าคุณรู้วิธี ฉันกำลังจัดเรียงข้อมูล ฉันจะดึงส่วนท้ายของตารางอย่างง่ายในฐานข้อมูล ( ฉันชื่อเทส):

ตารางทดสอบ:

id ชื่อจริง ชื่อ
1 Ivanov อีวาน
2 Petrov เปโตร
2 Petrov2 Petr2
xlsData = แพ็ค ("ssssss", 0x809, 0x08, 0x00,0x10, 0x0, 0x0); ) // เพียงแค่ฟังก์ชันตัวเลข RecNumber($row, $col, $value)( $this->xlsData .= pack("sssss", 0x0203, 14, $row, $col, 0x00); $this->xlsData . = pack("d", $value); return; ) //นี่คือฟังก์ชันข้อความ RecText($row, $col, $value)( $len = strlen($value); $this->xlsData .= pack (" s*", 0x0204, 8 + $len, $row, $col, 0x00, $len); $this->xlsData .= $value; return; ) // ใส่ฟังก์ชันตัวเลข InsertNumber($value)( ถ้า ($ this->countCol == $this->totalCol) ( $this->countCol = 0; $this->countRow++; ) $this->RecNumber($this->countRow, $this->countCol, $value ); $this->countCol++; return; ) // แทรกฟังก์ชันข้อความ InsertText($value)( if ($this->countCol == $this->totalCol) ( $this->countCol = 0; $this-> countRow++; ) $this->RecText($this->countRow, $this->countCol, $value);$this->countCol++; return; ) // ข้ามไปที่ แถวใหม่ฟังก์ชัน GoNewLine()( $this->countCol = 0; $this->countRow++; return; ) //สิ้นสุดฟังก์ชันข้อมูล EndData()( $this->xlsData .= pack("ss", 0x0A, 0x00); return ; ) // บันทึกฟังก์ชันไฟล์ SaveFile($fileName)( $this->fileName = $fileName; $this->SendFile(); ) // การส่งฟังก์ชันไฟล์ SendFile()( $this->EndData(); ส่วนหัว ( "Last-Modified: " .gmdate("D,d M YH:i:s") . "GMT"); "Pragma: no-cache"); ส่วนหัว ("ประเภทเนื้อหา: แอปพลิเคชัน/x-msexcel"); ส่วนหัว ("การจัดการเนื้อหา: ไฟล์แนบ; xlsData; ) ) ) if(isset($_GET["id"])) ( // กรองข้อมูล $id = mysql_real_escape_string(stripslashes(trim(htmlspecialchars($_GET["id"]) ,ENT_QUOTES)))); $filename = "File_c_id_".$id; // ตั้งชื่อไฟล์ $excel = new ExportToExcel(); // สร้างอินสแตนซ์ของคลาส $sql="SELECT * FROM test. ทดสอบโดยที่ id = $id";//read to base $rez =mysql_query($sql);$excel->InsertT ext("Identifier"); $excel->InsertText("Priest"); $excel->InsertText ("IM' i"); $excel->GoNewLine(); ในขณะที่($row=mysql_fetch_assoc($rez))( $excel->InsertNumber($row["id"]); $excel->InsertText($ row["firstname "]); $excel->InsertText($row ["name"]);$excel->GoNewLine(); ) $excel->SaveFile($filename); ) ?>

ความคิดทั้งหมดนี้เป็นของฟังก์ชัน หีบห่อ()เมื่อฉันแพ็คข้อมูลในแถวไบนารีและเรากรอกข้อมูลในแถวนี้ตามลำดับในขณะที่เราสำรวจจากฐานข้อมูล mysqlเพื่อฟังก์ชั่นที่ยอดเยี่ยมเพิ่มเติม mysql_query().

เพื่อย้อนกลับความถูกต้องของรหัสนี้ เพื่อให้แน่ใจว่าคุณเชื่อมต่อกับฐานข้อมูลและสร้างตารางที่คล้ายกัน คุณสามารถส่งคำขอต่อไปนี้:

http://your_site/file_name. php?id=2

คุณสามารถมีสองแถวที่มี id เท่ากัน 2

І ตอนนี้ หนัง ซึ่งคุณอนุญาตให้ใช้ข้อมูล คุณสามารถส่งออกไปยังของคุณ . ได้อย่างง่ายดาย คอมพิวเตอร์ท้องถิ่นผ่าน เว็บอินเตอร์เฟส. วิธีนี้เป็นวิธีที่ดีสำหรับผู้สื่อข่าวขององค์กร เช่นเดียวกับการขยายโปรแกรมสำหรับองค์กรของคุณ ตลอดจนสำหรับเว็บไซต์ของคุณบนอินเทอร์เน็ต ฉันขอโทษ ฉันช่วยคุณแล้ว ความสำเร็จ!

(data ฐานข้อมูล otrimani z mysql) เพื่อให้บรรลุความสำเร็จ ฉันเป็นผู้ชนะ Zend Framework ฉันต้องทำการเปลี่ยนแปลงบางอย่างในข้อมูลของฉันก่อนที่จะส่งออกไปยัง Excel อันที่จริง จำเป็นสำหรับฉันที่จะสร้างบัญชีเงินสดขนาดใหญ่

ฉันอ่านเอกสารจำนวนมาก แต่สะดุดอย่างสิ้นหวัง ฉันไม่เข้าใจจริงๆ ฉันจะเข้าใจได้อย่างไร ฉันต้องการ PEAR จริงๆหรือ? ทำไมจึงต้องมีห้องสมุดของชั้นเรียน? จิเป็นใบ้ ทางที่ง่ายเทส เทส?

ข้างหลัง

ฉันจะสอนวิธีใช้ไลบรารี PHPExcel PHPExcel ให้คุณ ยากเพียงpіdtrimuєraznі formati, robiti vizualnye formatuvannya และเรียบง่ายที่vikoristannі

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในเว็บไซต์ของคุณ: http://phpexcel.codeplex.com/ , (PHPExcel ถูกย้ายไปที่ https://github.com/PHPOffice/PHPExcel แล้ว)

ตัวอย่าง Vikoristan:

$objPHPExcel = PHPExcel ใหม่ (); /** คุณสามารถตั้งค่าคุณสมบัติได้มากมาย */ $objPHPExcel->getProperties()->setCreator("My company") ->setLastModifiedBy("John Doe") ->setTitle("Annual report") ->setSubject("Sales ") ->setDescription("รายงานการขายประจำปีโดย John Doe") ->setCategory("การเงิน"); /** เลือกแผ่นงานหนึ่งแผ่น */ $activeSheet = $objPHPExcel->setActiveSheetIndex(0); /** เพียงแค่ตั้งค่าของเซลล์ */ $activeSheet->setCellValue("A1", "plural");

คุณสามารถทำงานได้มากขึ้นอย่างเห็นได้ชัด การอ่าน ไฟล์ excel, การติดตั้งสไตล์ภาพ, การสร้างกราฟิก, ภาพจริง และอื่นๆ อีกมากมาย

ฉันเขียนการโทรเกี่ยวกับการเปลี่ยนแปลงในสินค้าคงคลัง 94 แถวซึ่งฉันรับข้อมูลจาก MySQL (6 kB + รายการต่อตาราง) สร้าง อาร์เรย์ที่อุดมไปด้วยชม. danih MySQLฮีโร่จากโต๊ะเดคิลโคห์แล้วโยนทุกอย่างในแถวเดียวและสร้าง

ไม่จำเป็นต้องมีส่วนขยายปกติ

สิ่งเดียวที่จะเตือนคือฉันยังไม่เข้าใจวิธีการถ่มน้ำลาย เห็นได้ชัดว่า ale win ทำให้เกิดความล่าช้าใน Excel

แก้ไข: ฉันต้องโทษว่า "การบรรจุ" ที่ "การถ่ายโอนข้อมูล" ถือเป็นการล่วงละเมิด: daniweb.com

คุณสามารถทวีตไลบรารี phpexcel สิ่งนี้ทำให้คุณสามารถเขียนและอ่านจากรูปแบบไฟล์ต่างๆ ในสเปรดชีต

สำหรับการผสานรวมกับ zend คุณสามารถรีบขอความช่วยเหลือจากกองกำลังที่น่ารังเกียจ

คุณสามารถแก้ไข CSV เพื่อสร้างรูปแบบที่สามารถนำเข้าสำหรับ excel วิธีที่ง่ายที่สุดที่จะเติบโต

CSV มีลักษณะดังนี้:

"เนื้อหาในเซลล์แรกของฉัน" "เนื้อหาในเซลล์ที่สองของฉัน" "เนื้อหาในเซลล์ที่สามของฉัน" "บรรทัดที่สอง เนื้อหาในเซลล์แรก" "ฯลฯ" "ฯลฯ

แถวหนังเป็นแถว Excel ให้วางตรงกลางห้อง อุ้งเท้าแกว่งและแบ่งปันกันเป็นก้อน โปรดใช้ความระมัดระวัง เนื่องจากข้อมูลของคุณมีอยู่แล้ว คุณสามารถสร้างความเสียหายให้กับ CSV และสร้างแถวใหม่ได้

จาก Google จำนวนน้อยที่คุณรู้จัก: http://www.the-art-of-web.com/php/dataexport/

การเตรียมข้อมูล

$data = array(array("firstname" => "Mary", "lastname" => "Johnson", "age" => 25), array("firstname" => "Amanda", "lastname" => ") Miller", "age" => 18), array("firstname" => "James", "lastname" => "Brown", "age" => 31), array("firstname" => "Patricia", "lastname" => "Williams", "age" => 7), array("firstname" => "Michael", "lastname" => "Davis", "age" => 43), array("firstname" => "Sarah", "lastname" => "Miller", "age" => 24), array("firstname" => "Patrick", "lastname" => "Miller", "age" => 27) );

ขั้นตอนแรกคือการดูข้อมูลในรูปแบบที่มีตัวจัดตาราง (CSV สามารถบิดเบี้ยวได้ แต่พับเพิ่มเล็กน้อย) สำหรับรหัส mi vikoristovuemo ถัดไป:

เราตั้งค่าประเภทเป็นข้อความ/ธรรมดาแทน เพื่อให้ดูผลลัพธ์ได้ง่ายในเบราว์เซอร์ ในอีกทางหนึ่งไม่มีเศษ การจัดรูปแบบ HTML, visnovok ปรากฏเป็นข้อความหนึ่งแถว

มุมมองแถวแรกจะเป็นส่วนหัวของคอลัมน์ (เขียนชื่อของฟิลด์พร้อมกัน) ค่าจะถูกเพิ่มโดยแท็บ \t ฉัน ในแถวที่มีการขยายแถว \n ผลลัพธ์อาจมีลักษณะดังนี้:

คนแรก คนสุดท้าย ริก มารี จอห์นสัน 25 อแมนดา มิลเลอร์ 18 เจมส์ บราวน์ 31 แพทริเซีย วิลเลียมส์ 7 ไมเคิล เดวิส 43 ซาร่าห์ มิลเลอร์ 24 แพทริค มิลเลอร์ 27

รหัสนี้มีจุดอ่อนที่อาจไม่ชัดเจนในทันที วิธีการทำงานเหมือนการรดน้ำอย่างที่คุณเห็นเพื่อล้างแค้นหรือโรยสัญลักษณ์ของตารางหรือมีอะไรมากกว่านั้นแถวใหม่? Tse vikliche กระบวนการทั้งหมด เพื่อที่เราพึ่งพาสัญลักษณ์ qi เพื่อแสดงเส้นและขยายแถว

วิธีแก้ไขคือ "ซ่อน" สัญลักษณ์การจัดตาราง ด้วยวิธีนี้ เราแทนที่แท็บด้วยตัวอักษร \t และตัวแบ่งบรรทัดด้วยตัวอักษร \n เพื่อไม่ให้กลิ่นเหม็นในการจัดรูปแบบ:

ตอนนี้ แถวแรกของสกินจะเป็นดวงจันทร์ ไม่ว่าสัญลักษณ์การจัดเรียงจะถูกแทนที่ด้วย "\t" เพื่อไม่ให้คอลัมน์ของเราแตก ดังนั้น ไม่ว่าจะเป็นการขยายแถวที่อยู่ตรงกลางของข้อมูล พวกมันจะถูกแทนที่ด้วย \n