В связи с требованиями проекта данные должны быть экспортированы в таблицу Excel, а элемент экспорта может быть выбран и загружен. Структура Spring+Mybatis+SpringMVC, используемая проектом, используется для экспорта Excel с использованием Apache Poi. Пожалуйста, используйте POI на Baidu. Без лишних слов, пожалуйста, добавьте код.
ExportExcelutil Code
пакет com.rixin.common.util; import java.io.outputstream; import java.lang.reflect.method; import java.net.urlencoder; импорт java.util.collection; импорт java.util.iterator; импорт javax.servlet.htp.httpservelcesponse; org.apache.poi.hssf.usermodel.hssfcell; import org.apache.poi.hssf.usermodel.hssfcellstyle; импорт org.apache.poi.hssf.usermodel.hssfrow; import org.apache.poi.hsssf.ushsfersel.hssfrow; import org.poche.poi.hsssf.hssfrew. org.apache.poi.hssf.usermodel.hssfworkbook; import org.apache.poi.ss.usermodel.font;/** * javaee export excel инструмент Имя файла FileName *, такое как: «Таблица студентов» * @param ExcelHeader * Marray заголовок таблицы Excel, сохранение строки «Имя#name», «Имя» - это строка заголовка Excel, а «имя» - это имя поля объекта * @param Datalist * Сбор данных, он должен соответствовать имени поля в stachlare @@try @try spective @tround spective @tround spective @tround spectain @tround spective @tround spective athrounf */public static <t> hssfworkbook Export (httpservletresponse ответ, название строки, string [] excelheader, collection <t> datalist) выбрасывает Exception {// Установить ответ запроса. SetContentType ("Application/Application/vnd.ms-Excel"); response.setheader ("Содержимое-распределение", "Attactment; filename =" + urlencoder.encode (имя файла + ".xls", "utf-8")); // Создать рабочую книгу, соответствующую файлу Excel HSSFWorkBook WB = New HSSFWorkBook (); // Установить стиль заголовка hssfcellstyle titlestyle = wb.createcellstyle (); // Установить стиль камеры Titlestyle.setbordertop (hssfcellstyle.border_thin); // Top Border Thin Edge Line Titlestyle.setborderbottom (hssfcellStyle.border_thin); // нижняя граница линии линии края. titlestyle.setborderright (hssfcellstyle.border_thin); // Линия тонкой края правой границы // Установка // горизонтальный центр titlestyle.setverticalAlignment (hssfcellstyle.vertical_center); // Вертикальный центр // Установить шрифт шрифт TitleFont = wb.createfont (); TitleFont.SetFonTheItinPoints ((короткий) 15); // высота шрифта titleFont.SetFontName ("BOLD"); // шрифт стиль titlestyle.setfont (titleFont); // Добавить лист в рабочую книгу, соответствующую листу в файле Excel HSSFSHEET SHEEF = WB.CREATESHEET (FILENAME); // Строка массива заголовок [] titlelerray = new String [Excelheader.length]; // имени поля строка массива [] fieldarray = new String [Excelheader.length]; for (int i = 0; i <excelheader.length; i ++) {string [] temparray = ExcelHeader [i] .split ("#"); // Временное разделение массива# titleleray [i] = temparray [0]; FieldArray [i] = Temparray [1]; } // Добавить строку заголовка в листе hssfrow row = sheet.createrow ((int) 0); // Количество строк начинается при 0 hssfcell sequecell = row.createcell (0); // Ячейка запускается при 0 и добавить номер последовательности sequecell.setcellvalue ("serial -номер"); secececell.setcellstyle (titlestyle); sheate.autosizecolumn (0); // автоматически установить ширину // Присвоение значению заголовка для (int i = 0; i <titlearray.length; i ++) {hssfcell tittlecell = row.createcell (i +1); // 0 бит занят серийным номером, so +1 titlecell.setecellue (i]; titlecell.setcellstyle (titlestyle); sheate.autosizecolumn (i + 1); // 0 бит занят последовательным номером, поэтому +1} // Стиль данных должен быть установлен отдельно из -за различных стилей заголовка и данных, в противном случае он будет перезаписывать hssfcellstyle datastyle = wb.createcellstyle (); // установить данные Data Datastyle.setborderbottom (hssfcellstyle.border_thin); datastyle.setbordertop (hssfcellstyle.border_thin); datastyle.setborderleft (hssfcellstyle.border_thin); datastyle.setborderright (hssfcellstyle.border_thin); // Установить центральный стиль datastyle.setalenment (hssfcellstyle.align_center); // горизонтальный центр datastyle.setverticalAlignment (hssfcellstyle.vertical_center); // Вертикальный центр // Установить данные шрифта Font DataFont = wb.createfont (); DataFont.SetFonTheItinPoints ((короткий) 12); // высота шрифта DATAFONT.SETFONTNAME ("安"); // font datastyle.setfont (dataFont); // Переносить данные сбора и генерировать итератор строк данных <t> it = datalist.iterator (); int index = 0; while (it.hasnext ()) {index ++; // 0 бит занят, так что +1 row = sheet.createrow (index); // Присвоение значению номеру последовательности hssfcell sequecellvalue = row.createcell (0); // Значение числа последовательности всегда является SequenceCellValue 0th Column.setCellValue (Index); SececeCellValue.SetCellStyle (datastyle); sheet.autosizecolumn (0); T t = (t) it.next (); // Используя отражение, динамически вызовите соответствующий метод getXXX () на основе массива имен пропущенного поля, получить значение атрибута для (int i = 0; i <fieldarray.length; i ++) {hssfcell datacell = row.createcell (i+1); dataCell.SetCellStyle (datastyle); sheet.autosizecolumn (i + 1); String FieldName = FieldArray [i]; String getMethodName = "get" + fieldname.substring (0, 1) .touppercase () + fieldname.substring (1); // Получить соответствующий метод getxxx () класс <? Extends Object> tcls = t.getClass (); // generics - это объект и подклассы всех методов объектов getMethod = tcls.getmethod (getMethodName, новый класс [] {}); // Получить соответствующий метод объект value = getMethod.invoke (T, новый объект [] {}); // Dynamic Caller, get Attrubation value if alull wat alul if wat alul if wat alul if alull wat alull DataCell.SetCellValue (value.ToString ()); // Присвоение значению текущему столбцу}}} outputStream outputStream = response.getOutputStream (); // Open Stream WB.Write (outputStream); // hssfworkbook write stream wb.close (); // hssfwork blose outputStream.flush () roote stream (); outputStream.close (); // Закройте потоковой return wb; } // xssfcellstyle.align_center Center выравнивание // xssfcellstyle.align_left левое выравнивание // xssfcellstyle.align_right правое выравнивание // xssfcellstyle.vertical_top alignment // xssfcellStyle.vertality_certer in the Sdentical_top ///sssfcellstyle.vertemalter. XSSFCellStyle.VERTICAL_BOTTOM in the right // CellStyle.BORDER_DOUBLE double-sided line // CellStyle.BORDER_THIN thin edge // CellStyle.BORDER_MEDIUM medium edge // CellStyle.BORDER_DASHED dotted edge // CellStyle.BORDER_HAIR small dot dotted edge // CellStyle.BORDER_THICK thick edge}Код контроллера
@Requestmapping ("/exportProject.do") public void exportProject (httpservletresponse, string export) {string [] excelheader = export.split (","); Список <project> projectList = projectservice.getProjects (null); try {exportexcelutil.export (ответ, "таблица проекта", Excelheader, ProjectList); } catch (Exception e) {e.printstackTrace (); }} Часть кода JSP
... <div style = "margin-top: 5px;"> <pan> <input type = "fackbox" value = "name#name" name = "export" ferced = "cherced"> </span> <input type = "text" value = "Имя проекта" Отключено = "Отключено"> </div> ...
Изображение ниже
Выше приведено в этой статье, я надеюсь, что это будет полезно для каждого обучения.