Phpexcel - تضيع التنسيق عند التحرير من التعليمات البرمجية

StackOverflow https://stackoverflow.com/questions/1859599

  •  13-09-2019
  •  | 
  •  

سؤال

أنا ألعب مع تكامل PHP - MS Excel هذه الأيام. مهمتي هي فتح جدول بيانات موجود، وإضافة بعض البيانات وحفظ جدول البيانات المملوء كملف جديد. أساسا نوع من محرك تعبئة القالب، يتم استخدام ملفات EventHough XLSX كقوالب.

نظرت إلى phpexcel. الذي يبدو أنه إطار لطيف إلى حد ما. من أجل تنفيذ دليل على المفهوم، فعلت ما يلي (تقليل إلى الحد الأدنى المطلوب لتوضيح ما أحتاج إلى القيام به):

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);  
$objPHPExcel = $objReader->load("myTemplateToFill.xlsx");

    //Here comes the actual filling
$objWorksheet = $objPHPExcel->createSheet();
$objWorksheet->setTitle('Apple')    ;
$objWorksheet->setCellValue('A1', 'Banana');    
$objPHPExcel->setActiveSheetIndex(0);

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('myFilledTemplate.xlsx');

تشغيل هذا لقد وجدت أنه يتم إنشاء ملف جديد، يتم إدراج DAAT الخاص بي ولكن للأسف مع فقدت جميع التنسيقات الموجودة.

إذن السؤال هو، هل هناك طريقة لجعل phpexcel تبقي تلك الأشكال في الملف الجديد؟ أو الذهاب إلى أبعد من ذلك: هل من الممكن الحفاظ على الرسوم البيانية وما إلى ذلك في ملف القالب وملء تلك الطريقة التي حاولت بها؟

شكرا مقدما على كل تجربتك مشتركة!

ك

هل كانت مفيدة؟

المحلول

Hum، تقوم بإنشاء ورقة عمل جديدة، لا يوجد لديه تنسيق بشكل افتراضي. أعتقد أنه عليك إضافة قيمك إلى الورقة الموجودة؟

$objPHPExcel->setActiveSheetIndex(0); // index of sheet
$workSheet = $objPHPExcel->getActiveSheet();
$workSheet->setTitle('Pflaume');

نصائح أخرى

يتم فقد التنسيق بسبب هذا الخط $ objreader-> setreaddataonly (صحيح)؛ التي تحكي القارئ القراءة فقط البيانات من مصنف القالب الخاص بك، وليس التنسيق.

تحتاج أيضا إلى تعديل البيانات في أوراق العمل الحالية. سيؤدي إنشاء ورقة عمل جديدة إلى إنشاء ورقة عمل غير موجودة. بدلا من ذلك، يمكنك استخدام طريقة نسخة Phpexcel_WorkSheet ()

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top