إنشاء ملفات Excel بسيطة
في المكاتب الحقيقية ، غالبًا ما يكون لدينا شرط: نطلب فتح التقرير مباشرة في Excel. هناك مثل هذه الحاجة خلال فترة التدريب. الاستعلام عن جميع معلومات المرفق المقدم من المستخدم بناءً على المورد المحدد وإنشاء Excel للتنزيل. ومع ذلك ، عند الاستعلام ، نحتاج إلى التحقق مما إذا كان هناك أي خطأ في المعلومات الواردة في المرفق المقدم من المستخدم (بطاقة الهوية). هناك خطأ في إنشاء رسالة خطأ Excel.
يعد مشروع Apache POI حاليًا واجهة HSSF ناضجة نسبيًا تستخدم لمعالجة الكائنات Excel. في الواقع ، لا يتعامل POI فقط على Excel ، بل يمكنه أيضًا التعامل مع Word و PowerPoint و Visio وحتى Outlook.
هنا سأقدم أولاً كيفية إنشاء Excel باستخدام POI.
بادئ ذي بدء ، قبل إنشاء Excel ، نحتاج إلى فهم تنظيم ملفات Excel. في POI ، من المفهوم على النحو التالي: ملف Excel يتوافق مع المصنف ، ويتألف كتاب العمال من عدة أوراق. تحتوي الورقة على صفوف متعددة ، والصف به عمومًا خلايا متعددة.
بالنسبة للأسماء الأربعة المذكورة أعلاه ، يمكننا أن نفهم في الشكل أدناه
لتوليد Excel ، يوفر POI الكائنات الأساسية التالية:
من الصورة أعلاه والهيكل التنظيمي Excel ، يمكننا فهم الخطوات لإنشاء Excel.
1. إنشاء كائن المستند HSSHWORDBOOK.
2. إنشاء نموذج HSSFSheet من خلال HSSFWorkbook.
3. إنشاء صفوف من خلال HSSFSheet
4. توليد الخلية HSSFCell من خلال HSSFROW.
هنا رمز العرض:
خطأ بطاقة الهوية Bean (errorcondition.java)
الفئة العامة errorcondition {اسم السلسلة الخاصة ؛ // name private String IdCard ؛ // بطاقة المعرف حالة السلسلة الخاصة ؛ // خطأ في رسالة السلسلة الخاصة ؛ // خطأ رسالة errorcondition (اسم السلسلة ، سلسلة idcard ، حالة السلسلة ، رسالة السلسلة) {this.name = name ؛ this.idcard = idcard ؛ this.status = الحالة ؛ this.message = رسالة ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } السلسلة العامة getIdCard () {return idcard ؛ } public void setIdCard (سلسلة idcard) {this.idcard = idcard ؛ } السلسلة العامة getStatus () {return status ؛ } public void setStatus (حالة السلسلة) {this.status = status ؛ } السلسلة العامة getMessage () {return message ؛ } public void setMessage (رسالة سلسلة) {this.message = message ؛ }}فئة المعالجة (ExporterRorerexcel.java)
Public Class ExporterRorexcel {public static void main (string [] args) {// Step 1 Create Workbook HsSfworkbook wb = new Hssfworkbook () ؛ // الخطوة 2 إنشاء ورقة HSSFSHEET = WB.CREATESHEET ("رسالة خطأ بطاقة المعرف") ؛ . HSSFCellStyle Style = WB.CreateCellStyle () ؛ style.setAlignment (HSSfCellStyle.Align_Center) ؛ // Center // الخطوة 4: إنشاء خلية HSSFCell Cell = row.createcell (0) ؛ // خلية الخلية الأولى. // set value cell.setCellStyle (style) ؛ // Center Content Cell = Row.CreateCell (1) ؛ // خلية الخلية الثانية. cell.setCellStyle (style) ؛ الخلية = row.createcell (2) ؛ // خلية الخلية الثالثة. cell.setCellStyle (style) ؛ الخلية = row.createcell (3) ؛ // خلية الخلية الرابعة. cell.setCellStyle (style) ؛ . لـ (int i = 0 ؛ i <list.size () ؛ i ++) {errorcondition errorcondition = list.get (i) ؛ // إنشاء صف = sheet.createrW (i+1) ؛ // إنشاء خلية وإضافة data row.createcell (0) .SetCellValue (errorcondition.getName ()) ؛ row.createcell (1) .SetCellValue (errorcondition.getIdCard ()) ؛ row.createcell (2) .SetCellValue (errorcondition.getStatus ()) ؛ row.createcell (3) .SetCellValue (errorcondition.getMessage ()) ؛ }. WB.Write (fout) ؛ fout.close () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } System.out.println ("Excel File Generation بنجاح ...") ؛ } القائمة الثابتة العامة <errorcondition> geterRorCondition () {list <errorcondition> list = new ArrayList <errorcondition> () ؛ errorcondition R1 = New ErrorCondition ("Zhang San" ، "4306821989021611" ، "L" ، "Enral Error") ؛ errorcondition R2 = New ErrorCondition ("Li Si" ، "430682198902191112" ، "X" ، "Check Error") ؛ errorcondition R3 = New ErrorCondition ("Wang Wu" ، "" ، "N" ، "معلومات بطاقة الهوية فارغة") ؛ list.add (r1) ؛ list.add (r2) ؛ list.add (r3) ؛ قائمة العودة }} من خلال الخطوات الست المذكورة أعلاه ، يمكنك إنشاء ملفات Excel في الموقع المحدد.
يقوم تطبيق Java POI بإدخال الصور في Excel
القيام بتطوير الويب أمر لا مفر منه للتعامل مع Excel. اليوم ، أعطاني الرئيس مهمة - تصدير Excel. ما اعتقدت في البداية كان بسيطًا للغاية ، كان مجرد البحث ، وبناء التفوق ، وتنزيل الاستجابة. ولكن هناك اختلاف واحد ، أي أنك تحتاج إلى إضافة صور ، إنها صورة تمت إضافتها لفترة طويلة. في الوقت نفسه ، لم يتم العثور على معلومات جيدة على الإنترنت ، لذلك كتبت منشور المدونة هذا لتسجيله لأصدقائي وأصدقائي في المدونة للاستعلام والمرجع.
يوجد كائن HSSFPatriarch في POI ، وهو المدير الأعلى للرسم. يمكن أن تقوم طريقة الإبداع (المرساة ، PictureIndex) بإدراج صورة في Excel. لذلك تحتاج إلى إدراج صورة في Excel ويمكنك القيام بذلك في ثلاث خطوات. 1. التنفيذ سهل التنفيذ للغاية ، ولكن لا يزال من الصعب بعض الشيء القيام بذلك بشكل جيد. هنا نقوم أولاً بإدراج صورة:
الفئة العامة excelimagetest {public static void main (string [] args) {fileOutputStream fileOut = null ؛ bufferedImage bufferimg = null ؛ // ضع القراءة أولاً في الصورة في bytearrayoutputStream لإنشاء bytearray try {bytearrayoutputstream bytearrayout = new bytearrayoutputstream () ؛ bufferimg = imageio.read (ملف جديد ("f: /picture/anounty/xiaozhao111.jpg")) ؛ imageio.write (bufferimg ، "jpg" ، bytearrayout) ؛ HSSFWORKBOOK WB = NEW HSSFWorkBook () ؛ HSSFSheet Sheet1 = WB.Createseet ("Test Picture") ؛ // يمكن للمدير الأعلى للرسم الحصول على ورقة واحدة فقط (تأكد من الانتباه إلى هذه النقطة) HSSFPATRiarch البطريرك = sheet1.createdRawingPatriarch () ؛ // يستخدم المرساة بشكل أساسي لتعيين سمات الصور HSSFClientanchor مرساة = جديد HSSFClientanchor (0 ، 0 ، 255 ، 255 ، (قصيرة) 1 ، 1 ، (قصيرة) 5 ، 8) ؛ Anchor.SetAnchortype (3) ؛ // أدخل الصورة البطريرية. fileOut = new FileOutputStream ("d:/test excel.xls") ؛ // اكتب إلى ملف excel wb.write (fileout) ؛ System.out.println ("---------") ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {if (fileout! = null) {try {fileout.close () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}}}}}}}} فيما يلي النتائج بعد التنفيذ:
أما بالنسبة لسبب هذه النتيجة ، فذلك بسبب HSSFClientanchor (0 ، 0 ، 255 ، 255 ، (قصيرة) 1 ، 1 ، (قصيرة) 5 ، 8). اسمحوا لي أن أشرح هذا المُنشئ أدناه: HSSFClientAnchor (int dx1 ، int dy1 ، int dx2 ، int dy2 ، col1 Short ، int row1 ، col2 ، int row2) ؛ معاني كل معلمة هي كما يلي:
هنا يحدد DX1 و DY1 موضع البداية للصورة في الخلية البداية ، ويحدد DX2 و DY2 الموضع النهائي للخلية النهائية. يحدد Col1 و ROW1 خلية البدء ، Col2 و ROW2 يحدد الخلية النهائية.
يتم إنشاء ما يلي مع اثنين من مُنشئين مختلفين. من هذه الصورة ، يمكننا أن نرى بوضوح معنى واختلافات المعلمات الثمانية المذكورة أعلاه.
ما سبق هو إدراج صورة واحدة ، فماذا عن إدخال صور متعددة؟ في الواقع ، الأمر بسيط للغاية. بناء العديد من كائنات HSSFClientAnchor المختلفة والتحكم في تلك المعلمات الثمانية ، على النحو التالي:
HSSFClientAnchor Anchor1 = جديد HSSFClientanchor (0 ، 0 ، 1023،100 ، (قصيرة) 1 ، 1 ، (قصيرة) 5 ، 8) ؛ HSSFClientanchor Anchor2 = جديد HSSFClientanchor (0 ، 0 ، 1023،100 ، (قصيرة) 1 ، 9 ، (قصيرة) 5 ، 16) ؛ // أدخل الصورة البطريرية. phariarch.createpicture (anchor2 ، wb.addpicture (bytearrayout.tobytearray () ، hssfworkbook.picture_type_jpeg)) ؛
بقية الكود هي نفسها ، ويتم الحصول على النتائج التالية: