المؤلف الأصلي: Podcast on the Iceberg عندما رأيت هذا المقال، فوجئت جدًا بصبر المؤلف الأصلي، على الرغم من أننا نستخدم بعضًا منها في الحياة اليومية، إلا أنه لم يتم إدراجها كلها من قبل المؤلف، عند كتابة Excel، استخدمت الكمثرى. Library، لقد استخدمت أيضًا رأس الحزمة، واستخدمت أيضًا تلك التي تستخدم Smarty لاستبدال XML ببساطة، ناهيك عن ملف CSV. الكالينجيون. (لن أتحدث عن طريقة COM. هناك الكثير منها التي يمكن قراءتها. وقد كتبت أيضًا مقالات حول استخدام wps لإنشاء الكلمات، وما إلى ذلك.)
لكن عندما كنت أقرأ، استخدمت واحدة فقط ونسيت ماهيتها، لذا كان علي أن أعود وأقرأ الكود. لأنه يقوم على مبدأ الاقتراض، لا أستطيع أن أتذكره.
العنوان الأصلي: http://xinsync.xju.edu.cn/index.php/archives/3858
المحتوى الأصلي:
مؤخرًا، نظرًا لاحتياجات المشروع، أحتاج إلى تطوير وحدة نمطية لتصدير بعض البيانات في النظام إلى Excel، وتعديلها، ثم استيرادها مرة أخرى إلى النظام. لقد اغتنمت الفرصة لإجراء بعض الأبحاث حول هذا الأمر، وإليك بعض الملخصات.
في الأساس، هناك نوعان من الملفات المصدرة:
1: تنسيق يشبه Excel. هذا في الواقع ليس ملف Excel بالمعنى التقليدي، وذلك فقط لأن Excel يتمتع بتوافق قوي ويمكن فتحه بشكل صحيح. بعد تعديل هذا النوع من الملفات ثم حفظه، سيُطلب منك عادةً ما إذا كنت تريد تحويله إلى ملف Excel.
المزايا: بسيطة.
العيوب: من الصعب إنشاء التنسيق إذا تم استخدامه للاستيراد، فستحتاج إلى كتابة البرنامج المقابل بنفسك.
2: تنسيق Excel، المطابق لـ Excel، الملف الذي تم إنشاؤه بهذه الطريقة أقرب إلى تنسيق Excel الحقيقي.
إذا ظهرت أحرف مشوهة عند تصدير اللغة الصينية، فيمكنك محاولة تحويل السلسلة إلى gb2312، على سبيل المثال، يقوم ما يلي بتحويل $yourStr من utf-8 إلى gb2312:
$yourStr = mb_convert_encoding(”gb2312″, “UTF-8″, $yourStr);
تم سرد العديد من الطرق أدناه بالتفصيل.
1. تصدير PHP إلى Excel
1: التوصية الأولى هي PHPExcel المشهور للغاية، الموقع الرسمي: http://www.codeplex.com/PHPExcel
يمكن استيراده وتصديره، ويمكن تصديره إلى تنسيق Office 2007، وهو متوافق أيضًا مع 2003.
تحتوي الحزمة التي تم تنزيلها على مستندات وأمثلة يمكنك دراستها بنفسك.
فيما يلي مثال لنسخ فقرة:
كود PHP
<?php
/**
* بي إتش بي إكسل
*
* حقوق الطبع والنشر (C) 2006 - 2007 PHPExcel
*
* هذه المكتبة هي برمجيات مجانية، يمكنك إعادة توزيعها و/أو
* قم بتعديله بموجب شروط GNU Lesser General Public
* الترخيص كما نشرته مؤسسة البرمجيات الحرة
* الإصدار 2.1 من الترخيص، أو (حسب اختيارك) أي إصدار أحدث.
*
* يتم توزيع هذه المكتبة على أمل أن تكون مفيدة،
* ولكن بدون أي ضمان؛
* القابلية للتسويق أو الملاءمة لغرض معين
* رخصة عامة أصغر لمزيد من التفاصيل.
*
* ينبغي أن تكون قد حصلت على نسخة من GNU Lesser General Public
* الترخيص مع هذه المكتبة، إذا لم يكن الأمر كذلك، فاكتب إلى البرنامج المجاني
* Foundation, Inc.، 51 شارع فرانكلين، الطابق الخامس، بوسطن، MA 02110-1301 الولايات المتحدة الأمريكية
*
* @الفئة PHPExcel
* @حزمة PHPExcel
* @ حقوق الطبع والنشر (ج) 2006 - 2007 PHPExcel ( http://www.codeplex.com/PHPExcel )
* @license http://www.gnu.org/licenses/lgpl.txt LGPL
* @ الإصدار 1.5.0، 23/10/2007
*/
/** الإبلاغ عن الأخطاء */
error_reporting(E_ALL);
/** تضمين المسار **/
set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/');
/** PHPExcel */
تضمين "PHPExcel.php"؛
/** PHPExcel_Writer_Excel2007 */
تضمين "PHPExcel/Writer/Excel2007.php"؛
// إنشاء كائن PHPExcel جديد
تاريخ الصدى('H:i:s') "إنشاء كائن PHPExcel جديدn";
$objPHPExcel = new PHPExcel();
// تعيين الخصائص
تاريخ الصدى('H:i:s') "تعيين الخصائصn";
$objPHPExcel->getProperties()->setCreator("مارتن باليو");
$objPHPExcel->getProperties()->setLastModifiedBy("مارتن باليو");
$objPHPExcel->getProperties()->setTitle("مستند اختبار XLSX لـ Office 2007");
$objPHPExcel->getProperties()->setSubject("مستند اختبار XLSX لـ Office 2007");
$objPHPExcel->getProperties()->setDescrīption("مستند اختباري لـ Office 2007 XLSX، تم إنشاؤه باستخدام فئات PHP.");
$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");
$objPHPExcel->getProperties()->setCategory("ملف نتائج الاختبار");
// أضف بعض البيانات
تاريخ الصدى('H:i:s') "أضف بعض البياناتn";
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->setCellValue('C1′, 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!');
// إعادة تسمية الورقة
تاريخ الصدى('H:i:s') "إعادة تسمية الورقةn";
$objPHPExcel->getActiveSheet()->setTitle('Simple');
// قم بتعيين فهرس الورقة النشطة على الورقة الأولى، بحيث يفتح Excel هذا كالورقة الأولى
$objPHPExcel->setActiveSheetIndex(0);
// احفظ ملف Excel 2007
تاريخ الصدى('H:i:s') "اكتب بتنسيق Excel2007n";
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
// تم الصدى
تاريخ الصدى('H:i:s') ” تم كتابة الملف.rn”;
2. استخدم عنوان تنزيل فئة Spreadsheet_Excel_Writer الخاص بـ pear: http://pear.php.net/package/Spreadsheet_Excel_Writer
تعتمد هذه الفئة على OLE، عنوان التنزيل: http://pear.php.net/package/OLE
تجدر الإشارة إلى أن تنسيق ملف Excel الذي تم تصديره قديم نسبيًا، وإذا قمت بحفظه بعد التعديل، فسيتم مطالبتك بما إذا كنت تريد تحويله إلى تنسيق أحدث أم لا.
ولكن يمكنك ضبط التنسيق، وهو قوي جدًا.
كود PHP
<?php
require_once 'جدول بيانات/Excel/Writer.php'؛
// إنشاء مصنف
$workbook = new Spreadsheet_Excel_Writer();
// إرسال رؤوس HTTP
$workbook->send('test.xls');
// إنشاء ورقة عمل
$worksheet =& $workbook->addWorksheet('ورقة العمل الأولى');
// البيانات الفعلية
$worksheet->write(0, 0, 'Name');
$worksheet->write(0, 1, 'Age');
$worksheet->write(1, 0, 'John Smith');
ورقة عمل $->كتابة(1, 1, 30);
$worksheet->write(2, 0, 'يوهان شميدت');
ورقة عمل $->كتابة(2, 1, 31);
$worksheet->write(3, 0, 'خوان هيريرا');
ورقة عمل $->كتابة(3, 1, 32);
// لنرسل الملف
$المصنف->إغلاق();
?>
3: استخدم Smarty لإنشاء تنسيقات دعم ملفات XML أو HTML التي تتوافق مع مواصفات Excel، وهو حل مثالي للتصدير. ومع ذلك، فإن الملف الذي تم تصديره هو في الأساس ملف XML إذا تم استخدامه للاستيراد، فيجب معالجته بشكل منفصل.
لمزيد من التفاصيل، يرجى الاطلاع على منشور بطل rardge: http://bbs.chinaunix.net/viewthread.php?tid=745757
تجدر الإشارة إلى أنه إذا كان عدد الصفوف في الجدول المصدر غير مؤكد، فمن الأفضل وضعه "ss:" في القالب: احذف أشياء مثل ExpandedColumnCount=”5″ ss:ExpandedRowCount=”21″”.
4. استخدم وظيفة الحزمة لطباعة رموز فواصل الجملة التي تحاكي تنسيق Excel. وهذا أقرب إلى تنسيق Excel القياسي بعد تعديله وحفظه في Office 2003، لن تظهر أي مطالبة.
العيب هو أنه ليس له شكل.
كود PHP
<?php
// إرسال الرأس
header("البراغما: عامة");
header("انتهاء الصلاحية: 0");
header("التحكم في ذاكرة التخزين المؤقت: يجب إعادة التحقق، الفحص اللاحق=0، الفحص المسبق=0");
header("نوع المحتوى: التطبيق/تنزيل القوة");
header("نوع المحتوى: تطبيق/بث ثماني بتات");
header("نوع المحتوى: تطبيق/تنزيل");;
header("الترتيب للمحتوى: مرفق;اسم الملف=test.xls");
header("ترميز نقل المحتوى: ثنائي");
// خلية بيانات XLS
xlsBOF();
xlsWriteLabel(1,0,"خط Excel الأول");
xlsWriteLabel(2,0,"سطر Excel الثاني:");
xlsWriteLabel(2,1,"مرحبًا بالجميع");
xlsEOF();
الدالة xlsBOF() {
حزمة الصدى ("ssssss"، 0x809، 0x8، 0x0، 0x10، 0x0، 0x0)؛
يعود؛
}
الدالة xlsEOF() {
حزمة الصدى ("ss"، 0 × 0A، 0 × 00)؛
يعود؛
}
الدالة xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0×203, 14, $Row, $Col, 0×0);
حزمة الصدى ("د"، $Value)؛
يعود؛
}
الدالة xlsWriteLabel($Row, $Col, $Value) {
$L = سترلين($Value);
echo pack("ssssss", 0×204, 8 + $L, $Row, $Col, 0×0, $L);
صدى $Value؛
يعود؛
}
?>
ومع ذلك، فشل المؤلف عند استخدامه على نظام Linux 64 بت، وأصبحت جميع رموز فصل الجملة أحرفًا مشوهة.
5. كيفية استخدام علامات التبويب وفواصل الأسطر
يسمح حرف علامة التبويب "t" للمستخدمين بفصل الأعمدة في نفس السطر، ويمكن لحرف السطر الجديد "tn" فتح السطر التالي.
<?php
header("نوع المحتوى: application/vnd.ms-execl");
header("الترتيب للمحتوى: المرفق; اسم الملف=myExcel.xls");
header("Pragma: no-cache");
header("انتهاء الصلاحية: 0");
/*السطر الأول*/
صدى "مرحبا"."t";
صدى "العالم"."t";
صدى "tn";
/*بداية السطر الثاني*/
صدى "هذا هو السطر الثاني".t";
صدى "مرحبًا أيتها الفتاة الجميلة".t";
صدى "tn";
?>
6. استخدم كوم
إذا كان بإمكان PHP الخاص بك فتح وحدة com، فيمكنك استخدامها لتصدير ملفات Excel
كود PHP
<?PHP
$filename = "c:/spreadhseet/test.xls";
$sheet1 = 1;
$sheet2 = "sheet2";
$excel_app = new COM("Excel.application") أو Die ("لم يتم الاتصال");
اطبع "اسم التطبيق: {$excel_app->Application->value}n";
اطبع "الإصدار المحمل: {$excel_app->Application->version}n";
$Workbook = $excel_app->Workbooks->Open("$filename") أو Die("لم يتم فتح $filename $Workbook");
$Worksheet = $Workbook->Worksheets($sheet1);
ورقة عمل $->تنشيط؛
$excel_cell = $Worksheet->Range("C4″);
$excel_cell->activate;
$excel_result = $excel_cell->value;
طباعة "$excel_resultn";
$Worksheet = $Workbook->Worksheets($sheet2);
ورقة عمل $->تنشيط؛
$excel_cell = $Worksheet->Range("C4″);
$excel_cell->activate;
$excel_result = $excel_cell->value;
طباعة "$excel_resultn";
#لإغلاق كافة مثيلات Excel:
المصنف $->إغلاق؛
unset($Worksheet);
غير محدد($Workbook);
$excel_app->المصنفات->Close();
$excel_app->Quit();
غير محدد($excel_app);
?>
مثال أفضل: http://blog.chinaunix.net/u/16928/showart_387171.html
1. استيراد PHP إلى Excel
1: لا تزال تستخدم PHPExcel، الموقع الرسمي: http://www.codeplex.com/PHPExcel .
2: استخدم PHP-ExcelReader، عنوان التنزيل: http://sourceforge.net/projects/phpexcelreader
مثال:
كود PHP
<?php
require_once 'Excel/reader.php'؛
// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();
// تعيين ترميز الإخراج.
$data->setOutputEncoding('utf8');
$data->read('jxlrwtest.xls');
error_reporting(E_ALL ^ E_NOTICE);
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo """.$data->sheets[0]['cells'][$i][$j].""،;
}
صدى "n";
}
?>
----------
يعتمد هذا الموقع اتفاقية حقوق الطبع والنشر للمشاع الإبداعي، والتي تتطلب الإسناد وغير التجاري والاتساق. يرحب هذا الموقع بأي إعادة طبع غير تجارية، ولكن يجب أن يشير إلى أنه مأخوذ من "Uncle Fatty's Simple Life"، ويحتفظ بالرابط الأصلي، ويجب أيضًا. تشير إلى العنوان الأصلي والرابط.