Генерировать простые файлы Excel
В реальных офисах у нас часто есть требование: мы требуем, чтобы отчет был открыт непосредственно в Excel. Есть такая потребность во время стажировки. Запросите всю информацию о вложении, предоставленном пользователем на основе выбранного ресурса, и генерируйте Excel для загрузки. Однако при запросе мы должны проверить, есть ли какие -либо ошибки в информации в вложении, предоставленном пользователем (идентификационной картой). Есть сообщение об ошибке, генерирующее сообщение об ошибке Excel.
Проект POI Apache в настоящее время является относительно зрелым интерфейсом HSSF, используемым для обработки объектов Excel. На самом деле, POI не только обрабатывает Excel, он также может справиться с Word, PowerPoint, Visio и даже Outlook.
Здесь я сначала представлю, как генерировать Excel, используя POI.
Прежде всего, прежде чем генерировать Excel, мы должны понять организацию файлов Excel. В POI это понимается следующим образом: файл Excel соответствует рабочей книге, а рабочая книга состоит из нескольких листов. Лист имеет несколько строк, а ряд обычно имеет несколько ячеек.
Для вышеупомянутых четырех существительных мы можем понять на рисунке ниже
Для генерации Excel POI предоставляет следующие основные объекты:
Из приведенной выше картинки и Excel организационную структуру мы можем понять шаги по созданию Excel.
1. Сгенерировать объект документа hsshworkbook.
2. Создайте форму HSSFSHEET через HSSFWorkBook.
3. Сгенерировать строки через HSSFSHEET
4. Сгенерировать Cell HSSFCell через HSSFROW.
Вот код отображения:
Ошибка идентификационных карт Bean (errorcondition.java)
Общедоступный класс ErrorCondition {private String name; // имя частной строки idcard; // ID -карта частной строки; // Состояние ошибки // Сообщение об ошибке ошибка Condition (String name, String idcard, String Status, String Message) {this.name = name; this.idcard = idcard; this.status = status; this.message = сообщение; } public String getName () {return name; } public void setName (string name) {this.name = name; } public String getIdcard () {return idcard; } public void setIdcard (string idcard) {this.idcard = idcard; } public String getStatus () {return Status; } public void SetStatus (String Status) {this.status = status; } public String getMessage () {return message; } public void setMessage (String Message) {this.message = сообщение; }}Класс обработки (ExporterRorexcel.java)
открытый класс exporterRorexcel {public static void main (string [] args) {// Шаг 1 Создание рабочей книги HSSFWorkBook WB = New HSSFWorkBook (); // Шаг 2 Создать лист HSSFSHEET SHEATE = WB.CREATESHEET ("Сообщение об ошибке идентификационной карты"); // Шаг 3 Создать строку строки: добавить 0 рядов заголовка таблицы hssfrow row = sheet.createrow (0); Hssfcellstyle style = wb.createcellstyle (); style.setalenment (hssfcellstyle.align_center); // Центр // Шаг 4: Создать ячейку HSSFCell Cell = row.createCell (0); // первая ячейка Cell.SetCellValue ("имя"); // Установить значение cell.setCellStyle (стиль); // Центральный содержимый ячейка = row.createCell (1); // вторая ячейка ячейки.setCellValue ("ID -карта"); cell.setcellstyle (стиль); cell = row.createCell (2); // третья ячейка ячейки.setCellValue ("Статус ошибки"); cell.setcellstyle (стиль); cell = row.createCell (3); // Четвертая ячейка ячейка.setCellValue («Сообщение об ошибке»); cell.setcellstyle (стиль); // Пятый шаг вставляет список данных <errorCondition> list = exportRorexcel.getErrorCondition (); for (int i = 0; i <list.size (); i ++) {errorcondition errorcondition = list.get (i); // Создать row = sheet.createrow (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 ()); } // Шаг 6 Сохранить сгенерированный файл Excel в указанный путь try {fileOutputStream fout = new FileOutputStream ("d: //errorCondition.xls"); wb.write (fout); fout.close (); } catch (ioException e) {e.printstackTrace (); } System.out.println ("Excel File успешно ..."); } public Static List <RightCondition> getErrorCondition () {list <RirsterCondition> list = new ArrayList <ErrorCondition> (); ErrorCondition R1 = Новая ошибка Condition ("Zhang San", "4306821989021611", "l", "Ошибка длины"); Ошибка Condition R2 = New ErryCondition ("li Si", "430682198902191112", "x", "проверка ошибка"); ErrorCondition R3 = New ErrorCondition ("Wang Wu", "", "n", "Информация о удостоверении личности пуста"); list.add (r1); list.add (r2); list.add (r3); вернуть список; }} Через шесть шагов вы можете генерировать файлы Excel в указанном месте.
Java Poi реализация вставляет картины в Excel
Делать веб -разработку неизбежно, чтобы иметь дело с Excel. Сегодня босс дал мне задачу - Export Excel. То, что я подумал поначалу, было довольно просто, это просто искало, создавал Excel и загружал ответ. Но есть одно отличие, то есть вам нужно добавить картинки, это было добавлено в течение долгого времени. В то же время в Интернете не было найдено хорошей информации, поэтому я написал этот пост в блоге, чтобы записать его для моего собственного и моих друзей в блоге для запроса и ссылки.
В POI есть объект HSSFPatriarch, который является главным менеджером для рисования. Его метод CreatePicture (Anchor, PictureIndex) может вставить изображение в Excel. Таким образом, вам нужно вставить картинку в Excel, и вы можете сделать это через три шага. 1. Получите объект HSSFPatriarch, 2. Новый объект HSSFClientAnchor, 3. Просто назовите метод CreatePicture. Реализация очень легко реализовать, но это все еще немного сложно сделать это хорошо. Здесь мы сначала вставляем картинку:
открытый класс 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/xiaozhao11.jpg")); Imageio.write (Bufferimg, "jpg", Bytearrayout); HSSFWorkBook WB = новый HSSFWorkBook (); HSSFSHEET SHILE1 = WB.CreateSheet («Тестовое изображение»); // Топ -менеджер рисования может получить только один лист (обязательно обратите внимание на этот момент) HSSFPATRIARCH PATRIARCH = Sheet1.createdRawingPatriarch (); // Якорь в основном используется для установки атрибутов изображений HSSFClientAnchor Anchor = New HSSFClientAnchor (0, 0, 255, 255, (короткий) 1, 1, (короткий) 5, 8); Anchor.setanchortype (3); // вставить картинку Patriarch.createPicture (Anchor, WB.Addpicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg)); fileout = new FileOutputStream ("d:/test excel.xls"); // записать в файл Excel WB.Write (FileOut); System.out.println ("--------"); } catch (Exception 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, short col1, int row1, short 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); // Вставьте картинку Patriarch.createPicture (Anchor1, WB.Addpicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg)); Patriarch.createPicture (Anchor2, WB.Addpicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg));
Остальная часть кода такая же, и получены следующие результаты: