เรียนผู้ใช้ EasyExcel:
ก่อนอื่น เราอยากจะแสดงความขอบคุณอย่างสุดซึ้งสำหรับความไว้วางใจและการสนับสนุน EasyExcel มายาวนาน ในระหว่างการเดินทางครั้งนี้ EasyExcel โชคดีที่ได้ร่วมพัฒนาและบริษัทต่างๆ มากมายเพื่อเติบโตไปด้วยกัน และได้เห็นความสำเร็จของงานประมวลผลข้อมูลจำนวนนับไม่ถ้วนที่เสร็จสิ้นอย่างมีประสิทธิภาพ
เมื่อเร็วๆ นี้ เราสังเกตเห็นว่ามีเครื่องมือและโซลูชันการประมวลผลข้อมูลที่ยอดเยี่ยมมากขึ้นปรากฏในตลาด ทำให้ผู้ใช้มีทางเลือกที่หลากหลายยิ่งขึ้น เพื่อให้แน่ใจว่าผู้ใช้ทุกคนจะได้รับประสบการณ์และบริการที่ดีที่สุด เราได้ตัดสินใจที่จะใช้มาตรการที่สำคัญ: EasyExcel จะค่อยๆ เข้าสู่โหมดการบำรุงรักษา และให้เวลาผู้ใช้เพียงพอในการประเมินและย้ายไปยังผลิตภัณฑ์อื่น ในเวลาเดียวกัน เรายังยินดีและยินดีที่ได้เห็นประสบการณ์การใช้งานและการโยกย้ายของผลิตภัณฑ์ที่ยอดเยี่ยมที่คล้ายกันซึ่งแบ่งปันภายในและภายนอกชุมชน เพื่อร่วมกันส่งเสริมการพัฒนาที่ดีของระบบนิเวศเทคโนโลยี
โปรดมั่นใจได้ว่าแม้ว่าเราจะเข้าสู่โหมดการบำรุงรักษา เราจะยังคงมั่นใจได้ว่าฟังก์ชันพื้นฐานของ EasyExcel ทำงานได้อย่างเสถียรและจะมีการแก้ไขข้อบกพร่อง แต่เราจะไม่เพิ่มฟังก์ชันใหม่อีกต่อไป เราเชื่อว่าด้วยความพยายามร่วมกันของทุกคน โค้ดทุกชิ้นและทุกโปรเจ็กต์จะยังคงโดดเด่นในสาขาของตนต่อไปและให้บริการกลุ่มผู้ใช้ที่กว้างขึ้น ขอขอบคุณอีกครั้งสำหรับการสนับสนุนและความเข้าใจใน EasyExcel! เราหวังว่าในโลกเทคโนโลยีอันกว้างใหญ่นี้ เราจะสามารถจับมือกันอีกครั้งในรูปแบบใหม่เพื่อสร้างความสดใส
ฉันขอให้คุณโชคดีในการทำงานและการศึกษาในอนาคต!
ขอแสดงความนับถือทีมงาน Alibaba EasyExcel
เฟรมเวิร์กที่มีชื่อเสียงมากขึ้นสำหรับการแยกวิเคราะห์ Java และสร้าง Excel ได้แก่ Apache poi และ jxl แต่พวกเขาทั้งหมดมีปัญหาร้ายแรงที่ใช้หน่วยความจำมาก POI มีชุดของ API โหมด SAX ที่สามารถแก้ไขปัญหาหน่วยความจำล้นได้ในระดับหนึ่ง แต่ POI ยังคงมีข้อบกพร่องบางอย่าง เช่น การขยายขนาดและการจัดเก็บของ Excel เวอร์ชัน 07 เสร็จสิ้นในหน่วยความจำและปริมาณการใช้หน่วยความจำยังคงมีขนาดใหญ่มาก
easyexcel ได้เขียนการวิเคราะห์ poi ของ Excel เวอร์ชัน 07 ใหม่ 3M excel ยังคงต้องการหน่วยความจำประมาณ 100M เพื่อแยกวิเคราะห์ด้วย POI sax การใช้ easyexcel สามารถลดขนาดลงเหลือเพียงไม่กี่ MB และไม่ว่า Excel จะมีขนาดใหญ่เพียงใด ก็ไม่มีเลย หน่วยความจำล้น เวอร์ชัน 03 ขึ้นอยู่กับโหมดแซกโซโฟนของ POI ที่ห่อหุ้มการแปลงโมเดลในเลเยอร์ด้านบน ทำให้ผู้ใช้ง่ายและสะดวกยิ่งขึ้น
แน่นอนว่ายังมีโหมดความเร็วที่เร็วกว่าแต่การใช้งานหน่วยความจำจะมากกว่า 100M เล็กน้อย
< dependency >
< groupId >com.alibaba</ groupId >
< artifactId >easyexcel</ artifactId >
< version >4.0.3</ version >
</ dependency >
โอเพ่นซอร์สไม่ใช่เรื่องง่าย หากคุณคิดว่า EasyExcel ยังคงมีประโยชน์ต่องานของคุณ โปรดช่วยด้วยการคลิกดาวที่มุมขวาบน การสนับสนุนของคุณคือแรงจูงใจที่ใหญ่ที่สุดในการทำให้ EasyExcel ดีขึ้น
issues
คุณสามารถลองค้นหาปัญหาได้ใน 2 ลิงก์ต่อไปนี้ หากไม่มีอยู่ คุณสามารถลองสร้าง issue
ได้
issues
issues
นักเรียนที่ประสบปัญหาเดียวกันสามารถตรวจสอบการแก้ปัญหาผ่าน issues
ในภายหลังได้ ดังนั้นจึงขอแนะนำวิธีนี้เป็นอย่างยิ่ง
ไม่ว่า github
หรือ gitee
จะเป็นเช่นไร ก็จะมีใครสักคนตอบคำถามของคุณเป็นประจำ หากเป็นเรื่องเร่งด่วนกว่านี้ คุณสามารถถามหัวหน้ากลุ่ม Aite ของ DingTalk ได้หลังจากแจ้ง 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
DingTalk 13 กลุ่ม: 83695000992
จี้เผิงเฟย (หยูเซียว), จวง เจียจู
ที่อยู่รหัสสาธิต: 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" ;
}