عزيزي مستخدمي EasyExcel:
بداية، نود أن نعرب عن عميق امتناننا لثقتكم ودعمكم لـ EasyExcel على المدى الطويل. خلال هذه الرحلة، كان EasyExcel محظوظًا بمرافقة العديد من المطورين والشركات للنمو معًا، وشهد الإنجاز الفعال لعدد لا يحصى من مهام معالجة البيانات.
لقد لاحظنا مؤخرًا ظهور المزيد من أدوات وحلول معالجة البيانات الممتازة في السوق، مما يوفر للمستخدمين خيارات أكثر ثراءً. من أجل ضمان تمتع كل مستخدم بأفضل تجربة وخدمة، قررنا اتخاذ إجراء مهم: سيدخل EasyExcel تدريجيًا في وضع الصيانة ويمنح المستخدمين وقتًا كافيًا لتقييم المنتجات الأخرى والانتقال إليها. وفي الوقت نفسه، نرحب أيضًا ويسعدنا أن نرى تجربة الاستخدام والهجرة لمنتجات ممتازة مماثلة يتم مشاركتها داخل المجتمع وخارجه لتعزيز التطوير الصحي للنظام البيئي التكنولوجي بشكل مشترك.
يرجى التأكد من أنه حتى إذا دخلنا في وضع الصيانة، فسوف نضمن تشغيل الوظائف الأساسية لـ EasyExcel بشكل ثابت وسيتم إجراء إصلاحات للأخطاء، لكننا لن نضيف وظائف جديدة بعد الآن. نحن نؤمن أنه من خلال الجهود المشتركة للجميع، سيستمر كل جزء من التعليمات البرمجية وكل مشروع في التألق في مجالات تخصصه وخدمة مجموعة أوسع من المستخدمين. شكرًا لك مرة أخرى على دعمك وتفهمك لـ EasyExcel! نأمل أنه في عالم التكنولوجيا الواسع، يمكننا أن نتكاتف مرة أخرى في أشكال جديدة لخلق التألق.
أتمنى لك كل التوفيق في عملك ودراستك المستقبلية!
مع خالص التقدير، فريق علي بابا EasyExcel
تتضمن أطر العمل الأكثر شهرة لتحليل Java وإنشاء Excel Apache poi وjxl. ولكن لديهم جميعًا مشكلة خطيرة تتمثل في أنهم يستهلكون الكثير من الذاكرة. تحتوي POI على مجموعة من واجهات برمجة التطبيقات لوضع SAX التي يمكنها حل بعض مشكلات تجاوز سعة الذاكرة إلى حد ما، ولكن لا تزال POI بها بعض العيوب، مثل إلغاء الضغط وتخزينها. يتم تنفيذ الإصدار 07 من Excel في الذاكرة، ولا يزال استهلاك الذاكرة كبيرًا جدًا.
أعاد easyexcel كتابة تحليل poi للإصدار 07 من Excel. لا يزال برنامج Excel 3M يتطلب حوالي 100 ميجابايت من الذاكرة لتحليله باستخدام POI sax يعتمد الإصدار 03 من الذاكرة الفائضة على وضع Sax الخاص بـ POI الذي يقوم بتغليف تحويل النموذج في الطبقة العليا، مما يجعله أسهل وأكثر ملاءمة للمستخدمين.
بالطبع، هناك أيضًا وضع سرعة أسرع، لكن استخدام الذاكرة سيكون أكثر بقليل من 100 ميجا.
< dependency >
< groupId >com.alibaba</ groupId >
< artifactId >easyexcel</ artifactId >
< version >4.0.3</ version >
</ dependency >
المصدر المفتوح ليس بالأمر السهل. إذا كنت تعتقد أن EasyExcel لا يزال مفيدًا لعملك، فيرجى المساعدة من خلال النقر على النجمة في الزاوية اليمنى العليا. إن دعمك هو الدافع الأكبر لجعل EasyExcel أفضل.
issues
يمكنك محاولة البحث عن المشكلة في الرابطين التاليين، وإذا لم تكن موجودة، فيمكنك محاولة إنشاء issue
.
issues
issues
يمكن مراجعة حل المشكلات من خلال issues
من قبل الطلاب الذين يواجهون نفس المشكلة لاحقًا، لذلك يوصى بشدة بهذه الطريقة.
بغض النظر عن github
أو gitee
، سيجيب شخص ما على أسئلتك بانتظام. إذا كان الأمر أكثر إلحاحًا، يمكنك أن تطلب من قائد مجموعة DingTalk Aite بعد إثارة issue
وإرسال عنوان issue
للمساعدة في حلها.
لا تسمح لك شركة QQ
باستخدامها، لكنني أنظر إليها أحيانًا، لكن الجوهر بالتأكيد لا يزال DingTalk.
انضم إلى مجموعات DingTalk أو QQ للحصول على المساعدة بعد قراءة الإعلان.
أوصي بشدة بمجموعة DingTalk، لكن شركة QQ
لا تسمح لك باستخدامها بالطبع، سيكون لدى مجموعة QQ أيضًا مستخدمو الإنترنت المتحمسون للمساعدة في حل المشكلة.
مجموعة QQ1 (كاملة): 662022184
مجموعة QQ2 (كاملة): 1097936804
مجموعة QQ3 (كاملة): 453928496
مجموعة QQ4 (كاملة): 496594404
مجموعة QQ5 (كاملة): 451925680
مجموعة QQ6 (كاملة): 784741035
مجموعة QQ7 (كاملة): 667889383
مجموعة QQ8: 113968681
مجموعة DingTalk 1 (كاملة): 21960511
مجموعة DingTalk 2 (كاملة): 32796397
مجموعة DingTalk 3 (كاملة): 33797247
مجموعة DingTalk 4 (كاملة): 33491624
مجموعة DingTalk 5 (كاملة): 32134498
مجموعة DingTalk 6 (كاملة): 34707941
مجموعة DingTalk 7 (كاملة): 35235427
مجموعة DingTalk 8 (كاملة): 44752220
مجموعة DingTalk 9 (كاملة): 11045002277
مجموعة DingTalk 10 (كاملة): 27360019755
مجموعة DingTalk 11 (كاملة): 24330026964
مجموعة DingTalk 12 (كاملة): 27210038956
مجموعة دينغ توك 13: 83695000992
جي Pengfei (Yuxiao)، Zhuang Jiaju
عنوان الرمز التجريبي: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java
عنوان المستند التفصيلي: https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read
/**
* 最简单的读
* <p>1. 创建excel对应的实体对象 参照{@link DemoData}
* <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link DemoDataListener}
* <p>3. 直接读即可
*/
@ Test
public void simpleRead () {
String fileName = TestFileUtil . getPath () + "demo" + File . separator + "demo.xlsx" ;
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel . read ( fileName , DemoData . class , new DemoDataListener ()). sheet (). doRead ();
}
عنوان الرمز التجريبي: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java
عنوان المستند التفصيلي: https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write
/**
* 最简单的写
* <p>1. 创建excel对应的实体对象 参照{@link com.alibaba.easyexcel.test.demo.write.DemoData}
* <p>2. 直接写即可
*/
@ Test
public void simpleWrite () {
String fileName = TestFileUtil . getPath ()+ "write" + System . currentTimeMillis ()+ ".xlsx" ;
// 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
// 如果这里想使用03 则 传入excelType参数即可
EasyExcel . write ( fileName , DemoData . class ). sheet ( "模板" ). doWrite ( data ());
}
عنوان الرمز التجريبي: https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java
/**
* 文件下载(失败了会返回一个有部分数据的Excel)
* <p>
* 1. 创建excel对应的实体对象 参照{@link DownloadData}
* <p>
* 2. 设置返回的 参数
* <p>
* 3. 直接写,这里注意,finish的时候会自动关闭OutputStream,当然你外面再关闭流问题不大
*/
@ GetMapping ( "download" )
public void download ( HttpServletResponse response ) throws IOException {
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
response . setContentType ( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" );
response . setCharacterEncoding ( "utf-8" );
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder . encode ( "测试" , "UTF-8" ). replaceAll ( " \ +" , "%20" );
response . setHeader ( "Content-disposition" , "attachment;filename*=utf-8''" + fileName + ".xlsx" );
EasyExcel . write ( response . getOutputStream (), DownloadData . class ). sheet ( "模板" ). doWrite ( data ());
}
/**
* 文件上传
* <p>1. 创建excel对应的实体对象 参照{@link UploadData}
* <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link UploadDataListener}
* <p>3. 直接读即可
*/
@ PostMapping ( "upload" )
@ ResponseBody
public String upload ( MultipartFile file ) throws IOException {
EasyExcel . read ( file . getInputStream (), UploadData . class , new UploadDataListener ( uploadDAO )). sheet (). doRead ();
return "success" ;
}