تصف هذه المقالة بشكل أساسي عملية تحميل Excel تحت إطار عمل Springboot-Mybatis واستيرادها إلى قاعدة بيانات MySQL. إذا كان معرف المستخدم موجودًا بالفعل ، فقم بتحديث المعلومات في قاعدة البيانات وتعديلها. نظرًا لاستخدام تقنية الفصل الأمامي ، فإن السجل الرئيسي لجزء Java الخلفي هو الواجهة الخلفية. يمكنه تطبيق الوظائف عن طريق الاتصال بالواجهة الأمامية ، واستخدام الأطر الأمامية مثل Layui للتواصل معها. يمكنك أيضًا كتابة التعليمات البرمجية الأمامية بنفسك. تبدأ هذه المقالة بوحدة التحكم وتبدأ بعملية المقدمة ، والتي تتضمن تحويل جدول القاموس.
1. استيراد التعليقات التوضيحية في ملف pom.xml ، بشكل رئيسي باستخدام POI
<Rependency> <roupeD> org.apache.poi </rougiD> <StifactId> poi-ooxml </shintifactid> <الإصدار> 3.9 </version> </sependency> <sependency> <roupl> commons-io </rougeid> <StifactId> commons-io </shintifactid> <الإصدار> 2.4 </version> </dependency>
2.controller واجهة
postMapping ("/save") السلسلة العامة AddUser (requestparam ("file") ملف multipartfile) {string filename = file.getoriginalfilename () ؛ حاول {return sysservice.batchimport (اسم الملف ، ملف) ؛ } catch (myException e) {E.PrintStackTrace () ؛ إرجاع e.getMessage () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ إرجاع "استثناء الملف ، فشل الاستيراد" ؛ }}3. واجهة طبقة الخدمة
الاستيراد المنطقي (اسم ملف السلسلة ، ملف multipartfile) يلقي الاستثناء ؛
4. فئة تنفيذ طبقة الأعمال
transactional (readOnly = false ، rollbackfor = inspecial.class) Override public boolean import (اسم ملف السلسلة ، ملف multipartfile) يلقي الاستثناء {map <string ، integer> departmentMap = findDepartment () ؛ الخريطة <string ، integer> rolemap = findRole () ؛ منطقية notnull = false ؛ قائمة <Sether> userList = new ArrayList <Sether> () ؛ if (! filename.matches ("^.+//. (؟ i) (xls) $") &&! filename.matches ("^.+//. (؟ } boolean isexcel2003 = true ؛ if (filename.matches ("^.+//. (؟ i) (xlsx) $"))) {isexcel2003 = false ؛ } inputStream هو = file.getInputStream () ؛ المصنف WB = NULL ؛ if (isexcel2003) {wb = new HSSfworkBook (IS) ؛ } آخر {wb = new xssfworkbook (is) ؛ } ورقة ورقة = wb.getsheetat (0) ؛ if (sheet! = null) {notnull = true ؛ } مستخدم المستخدم ؛ لـ (int r = 1 ؛ r <= sheet.getLastrownum () ؛ r ++) {row row = sheet.getRow (r) ؛ if (row == null) {contert ؛ } user = new user () ؛ if (row.getCell (0) .getCellType ()! = 1) {رمي myException جديد ("فشل الاستيراد (الصف"+(R+1)+"وتم تعيين تنسيق خلية المعرف على تنسيق النص)") ؛ } string id = row.getCell (0) .getStringCellValue () ؛ if (id == null || id.isempty ()) {رمي myException جديد ("فشل الاستيراد (الصف"+(r+1)+"ومعرف لم يتم ملؤه)") ؛ } اسم السلسلة = row.getCell (1) .getStringCellValue () ؛ if (name == null || name.isempty ()) {رمي myException جديد ("فشل الاستيراد (السطر"+(r+1)+"والاسم غير ملء)") ؛ } string department = row.getCell (2) .getStringCellValue () ؛ إذا كان (DepartmentMap.get (Department) == NULL) {رمي MyException جديد ("فشل الاستيراد (السطر"+(R+1)+"وهذه الوحدة غير موجودة أو لم يتم ملء الوحدة)") ؛ } string rol = row.getCell (3) .getStringCellValue () ؛ إذا كان (rolemap.get (دور) == null) {رمي myException جديد ("فشل الاستيراد (السطر"+(r+1)+"، هذا الدور غير موجود أو أن الدور لم يتم ملؤه)") ؛ تاريخ تاريخ ؛ if (row.getCell (4) .getCellType ()! = 0) {رمي myException جديد ("فشل الاستيراد (السطر"+(r+1)+"، تنسيق تاريخ الإدخال غير صحيح أو غير ملء)") ؛ } آخر {date = row.getCell (4) .getDateCellValue () ؛ } user.setId (id) ؛ user.setName (name) ؛ user.setDepartmentId ((int) departmentMap.get (Department)) ؛ user.setroleid ((int) rolemap.get (دور)) ؛ user.setDate (date) ؛ userList.add (المستخدم) ؛ } لـ (المستخدم: قائمة المستخدمين) {string id = user.getId () ؛ int cnt = userMapper.SelectById (id) ؛ if (cnt == 0) {usermapper.adduser (user) ؛ } آخر {usermapper.updateuserById (user) ؛ }} إرجاع notnull ؛ }لخص
ما سبق هو ما يقدمه لك المحرر. يقوم Springboot بتحميل بيانات الجدول إلى أو يحد من قاعدة بيانات MySQL أو تحديثها. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!