Apache POI поддерживает настраиваемую печать, позволяя пользователям выбирать диапазон ячеек, чтобы настроить желаемую область печати на листе с помощью программы Java. Самая верхняя фигура — патриарх. На листе этого вообще не видно. Чтобы начать рисовать, вам нужно вызвать createPatriarch в классе HSSFSheet.
Давайте возьмем пример для создания овальной формы, используя все стили для файла Excel, используя Apache POI.
Approach:
- Во-первых, нам нужно добавить зависимость Maven в проект maven, мы можем включить зависимость POI, используя файл pom.xml, как показано ниже:
- Создание экземпляра книги
- Создайте электронную таблицу в указанной выше рабочей книге.
- Создание строк с помощью XSSFrow
- Создайте ячейку с помощью XSSFCell.
- Создайте патриарха с помощью HSSFPatriarch.
- Для размещения фигуры на листе Excel создайте привязку с помощью HSSFClientAnchor.
- Установите тип формы (линия, овал, прямоугольник и т. д.)
- Установите любые другие детали стиля, описывающие фигуру. (например, толщина линии и т. д.)
- Запись содержимого в книгу путем определения объекта типа FileOutputStream.
- Закройте соединение файла.
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency>
- Требуемые методы
- Метод 1: HSSFClientAnchor()
- Способ 2: создатьSimpleShape()
- Метод 3: setShapeType (HSSFSimpleShape.OBJECT_TYPE_OVAL)
- Способ 4: setLineStyleColor(8, 8, 8)
- Способ 5: установитьFillColor(100, 10, 150)
- Способ 6: setLineWidth(HSSFShape.LINEWIDTH_ONE_PT * 3)
- Способ 7: setLineStyle(HSSFShape.LINESTYLE_DOTSYS)
Требуемые методы
Метод 1: HSSFClientAnchor()
HSSFClientAnchor (int dx1, int dy1, int dx2, int dy2, короткий col1, int row1, короткий col2, int row2)
Создает новую клиентскую привязку и устанавливает верхнюю левую и нижнюю правую координаты привязки.
Примечание. Microsoft Excel иногда не допускает более высокое значение y1, чем y2, или большее значение x1, чем значение x2. Возможно, вам придется обратить их и нарисовать фигуры, перевернутые по вертикали или по горизонтали!
Параметры:
- dx1 — координата x в первой ячейке.
- dy1 — координата y в первой ячейке.
- dx2 — координата x во второй ячейке.
- dy2 — координата y во второй ячейке.
- col1 — столбец (на основе 0) первой ячейки.
- row1 — строка (на основе 0) первой ячейки.
- col2 — столбец (отсчитываемый от 0) второй ячейки.
- row2 — строка (отсчитываемая от 0) второй ячейки.
Способ 2: создатьSimpleShape()
Создает простую форму. Это включает в себя такие формы, как линии, прямоугольники и овалы.
Параметры: anchor клиентский якорь описывает, как эта группа прикрепляется к листу.
Возвраты: только что созданная форма.
Метод 3: setShapeType (HSSFSimpleShape.OBJECT_TYPE_OVAL)
Параметры: значение — shapeType
Способ 4: setLineStyleColor(8, 8, 8)
Цвет применяется к линиям этой формы.
Параметры: красный зеленый синий
Способ 5: установитьFillColor(100, 10, 150)
Цвет используется для заполнения этой формы.
Параметры: красный зеленый синий
Способ 6: setLineWidth(HSSFShape.LINEWIDTH_ONE_PT * 3)
Устанавливает ширину линии. 12700 = 1 балл.
Параметры: ширина линии в EMU. 12700EMU = 1 очко
Способ 7: setLineStyle(HSSFShape.LINESTYLE_DOTSYS)
Устанавливает стиль линии.
Параметры: lineStyle Одна из констант в LINESTYLE_
Реализация:
// Java Program to Creating an Oval Shape Using all the
// styling to Excel File using Apache POI
// Importing required classes
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import
org.apache.poi.hssf.usermodel.HSSFPatriarch;
import
org.apache.poi.hssf.usermodel.HSSFShape;
import
org.apache.poi.hssf.usermodel.HSSFSimpleShape;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook;
import
org.apache.poi.ss.usermodel.Sheet;
import
org.apache.poi.ss.usermodel.Workbook;
// Main class
public
class
GFG {
// Main driver method
public
static
void
main(String args[])
throws
IOException
{
// Naming a workbook
String excelfilename =
"GFG.xls"
;
// Creating a workbook
Workbook workbook =
new
HSSFWorkbook();
// Creating a spreadsheet by creating an object of
// XSSFSheet and also give name
Sheet spreadsheet
= workbook.createSheet(
"XLDrawingShape"
);
// Creating an object patriarch of HSSFPatriarch.
HSSFPatriarch patriarch
= (HSSFPatriarch)
spreadsheet.createDrawingPatriarch();
// Creating an object anchor of HSSFClientAnchor
// and also set a value
HSSFClientAnchor anchor =
new
HSSFClientAnchor(
0
,
0
,
1023
,
255
, (
short
)
1
,
0
, (
short
)
5
,
4
);
// Creating an object shape of HSSFSimpleShape
HSSFSimpleShape shape
= patriarch.createSimpleShape(anchor);
// Setting all the atributes of shape
shape.setShapeType(
HSSFSimpleShape.OBJECT_TYPE_OVAL);
shape.setLineStyleColor(
8
,
8
,
8
);
shape.setFillColor(
100
,
10
,
150
);
shape.setLineWidth(HSSFShape.LINEWIDTH_ONE_PT *
3
);
shape.setLineStyle(HSSFShape.LINESTYLE_DOTSYS);
// try block to check for exceptions
try
{
// Placing the output file in default location
// and also kept in try catch block
FileOutputStream outputfile
=
new
FileOutputStream(excelfilename);
// Writing to workbook
workbook.write(outputfile);
// Closing workbook using close() method
outputfile.close();
// Displaying message for console window when
// program is successfully executed
System.out.println(excelfilename
+
" is written sucessfully"
);
}
// Catch block to handle the exce[tions
catch
(FileNotFoundException e) {
// Displaying error message for console window
// when program is not successfully executed
System.out.println(
"ERROR!! "
+ e.getMessage());
}
}
}
Вывод: в окне консоли
Когда программа успешно выполнена.
GFG.xlsx is written successfully.
Когда программа не выполняется успешно.
ERROR!! GFG.xlsx (The process cannot access the file because it is being used by another process)
Выход: рабочая книга (файл excel)