kz.greetgo.msoffice.xlsx.gen.Chart Maven / Gradle / Ivy
Show all versions of greetgo.msoffice Show documentation
package kz.greetgo.msoffice.xlsx.gen;
import java.io.PrintStream;
public class Chart {
private final ChartType type;
private final int fileid;
private final int relid;
private String title = "";
private String data;
private String titles;
private String data2;
private String titles2;
private int expl;
private Align alignl = Align.bottom;
private Align alignOY = Align.left;
private int rotate = 30;
private int wline = 18440;
private int wline2 = 18440;
private Color cink = Color.black();
private Color cink2 = Color.black();
private Color cpaper = Color.white();
Chart(ChartType type, int fileid, int relid) {
this.type = type;
this.fileid = fileid;
this.relid = relid;
}
/**
* Установка названия диаграммы
*
* @param title название диаграммы
*/
public void setTitle(String title) {
if (title == null) title = "";
this.title = title;
}
/**
* Устанавливает
*
* @param explosion зазор между сегментами диаграммы (круговой).
*/
public void setExplosion(int explosion) {
if (explosion > 0) expl = explosion;
}
/**
* Устанавливает
*
* @param align положение списка подписей к данным (легенды)
*/
public void setAlignmentLegend(Align align) {
alignl = align;
}
/**
* Устанавливает
*
* @param align положение подписей к оси Y (график): слева / справа.
*/
public void setAlignmentOY(Align align) {
alignOY = align;
}
/**
* Устанавливает
*
* @param rotationAngle поворот графика по горизонтали
*/
public void setRotation(int rotationAngle) {
rotate = rotationAngle;
}
/**
* Устанавливает
*
* @param lineColor цвет линий диаграммы
*/
public void setColorLine(Color lineColor) {
cink = lineColor;
}
/**
* Устанавливает
*
* @param lineColor цвет дополнительных линий диаграммы (для графика с двумя функциями)
*/
public void setColorLine2(Color lineColor) {
cink2 = lineColor;
}
/**
* Устанавливает
*
* @param widthLine ширина линий диаграммы (1-30)
*/
public void setWidthLine(int widthLine) {
wline = widthLine * 1000;
}
/**
* Устанавливает
*
* @param widthLine ширина дополнительных линий диаграммы (1-30) (для графика с двумя функциями)
*/
public void setWidthLine2(int widthLine) {
wline2 = widthLine * 1000;
}
/**
* Устанавливает
*
* @param bgColor цвет фона диаграммы
*/
public void setColorBackground(Color bgColor) {
cpaper = bgColor;
}
/**
* Определение строки или столбца с числовыми данными.
*
* @param data формула строки в формате
* ИмяЛиста!$БукваСтолбца1$НомерСтроки:$БукваСтолбца2
* $НомерСтроки
*
* или формула столбца в формате ИмяЛиста!$БукваСтолбца$
* НомерСтроки1:$БукваСтолбца$НомерСтроки2
*/
public void setData(String data) {
this.data = data;
}
public void setData2(String data) {
this.data2 = data;
}
/**
* Определение столбца с числовыми данными, удобна для динамического определения.
*
* @param dataSheet лист, содержащий столбец с числовыми данными
* @param dataCol буква столбца (A, B, C)
* @param dataRow1 номер первой строки в столбце (1, 2, 3)
* @param dataRow2 номер последней строки в столбце (4, 5, 6)
*/
public void setData(Sheet dataSheet, String dataCol, int dataRow1, int dataRow2) {
data = setData_(dataSheet, dataCol, dataRow1, dataRow2);
}
public void setData2(Sheet dataSheet, String dataCol, int dataRow1, int dataRow2) {
data2 = setData_(dataSheet, dataCol, dataRow1, dataRow2);
}
private String setData_(Sheet dataSheet, String dataCol, int dataRow1, int dataRow2) {
StringBuffer buf = new StringBuffer();
buf.append(dataSheet.getDisplayName());
buf.append("!$");
buf.append(dataCol);
buf.append("$");
buf.append(dataRow1);
buf.append(":$");
buf.append(dataCol);
buf.append("$");
buf.append(dataRow2);
return buf.toString();
}
/**
* Определение строки с числовыми данными, удобна для динамического определения.
*
* @param dataSheet лист, содержащий строку с числовыми данными
* @param dataCol1 буква первого столбца в строке (A, B, C)
* @param dataCol2 буква первого столбца в строке (A, B, C)
* @param dataRow номер строки (1, 2, 3)
*/
public void setData(Sheet dataSheet, String dataCol1, String dataCol2, int dataRow) {
data = setData_(dataSheet, dataCol1, dataCol2, dataRow);
}
public void setData2(Sheet dataSheet, String dataCol1, String dataCol2, int dataRow) {
data2 = setData_(dataSheet, dataCol1, dataCol2, dataRow);
}
public String setData_(Sheet dataSheet, String dataCol1, String dataCol2, int dataRow) {
StringBuffer buf = new StringBuffer();
buf.append(dataSheet.getDisplayName());
buf.append("!$");
buf.append(dataCol1);
buf.append("$");
buf.append(dataRow);
buf.append(":$");
buf.append(dataCol2);
buf.append("$");
buf.append(dataRow);
return buf.toString();
}
/**
* Определение строки или столбца с подписями.
*
* @param titles формула строки в формате
* ИмяЛиста!$БукваСтолбца1$НомерСтроки:$БукваСтолбца2
* $НомерСтроки
*
* или формула столбца в формате ИмяЛиста!$БукваСтолбца$
* НомерСтроки1:$БукваСтолбца$НомерСтроки2
*/
public void setDataTitles(String titles) {
this.titles = titles;
}
public void setDataTitles2(String titles) {
this.titles2 = titles;
}
/**
* Определение столбца с подписями, удобна для динамического определения.
*
* @param dataSheet лист, содержащий столбец с числовыми данными
* @param dataCol буква столбца (A, B, C)
* @param dataRow1 номер первой строки в столбце (1, 2, 3)
* @param dataRow2 номер последней строки в столбце (4, 5, 6)
*/
public void setDataTitles(Sheet dataSheet, String dataCol, int dataRow1, int dataRow2) {
titles = setDataTitles_(dataSheet, dataCol, dataRow1, dataRow2);
}
public void setDataTitles2(Sheet dataSheet, String dataCol, int dataRow1, int dataRow2) {
titles2 = setDataTitles_(dataSheet, dataCol, dataRow1, dataRow2);
}
public String setDataTitles_(Sheet dataSheet, String dataCol, int dataRow1, int dataRow2) {
StringBuffer buf = new StringBuffer();
buf.append(dataSheet.getDisplayName());
buf.append("!$");
buf.append(dataCol);
buf.append("$");
buf.append(dataRow1);
buf.append(":$");
buf.append(dataCol);
buf.append("$");
buf.append(dataRow2);
return buf.toString();
}
/**
* Определение строки с подписями, удобна для динамического определения.
*
* @param dataSheet лист, содержащий строку с числовыми данными
* @param dataCol1 буква первого столбца в строке (A, B, C)
* @param dataCol2 буква первого столбца в строке (A, B, C)
* @param dataRow номер строки (1, 2, 3)
*/
public void setDataTitles(Sheet dataSheet, String dataCol1, String dataCol2, int dataRow) {
data = setDataTitles_(dataSheet, dataCol1, dataCol2, dataRow);
}
public void setDataTitles2(Sheet dataSheet, String dataCol1, String dataCol2, int dataRow) {
data2 = setDataTitles_(dataSheet, dataCol1, dataCol2, dataRow);
}
public String setDataTitles_(Sheet dataSheet, String dataCol1, String dataCol2, int dataRow) {
StringBuffer buf = new StringBuffer();
buf.append(dataSheet.getDisplayName());
buf.append("!$");
buf.append(dataCol1);
buf.append("$");
buf.append(dataRow);
buf.append(":$");
buf.append(dataCol2);
buf.append("$");
buf.append(dataRow);
return buf.toString();
}
int getRelId() {
return relid;
}
int getFileId() {
return fileid;
}
void print(PrintStream os) {
StringBuffer buf = new StringBuffer();
buf.append("");
buf.append("");
buf.append("");
buf.append(title);
buf.append(" ");
if (type == ChartType.CIRCLE_DIAGRAM) {
buf.append("");
}
appendSer(buf, data, titles, cink, wline);
if (data2 != null && !data2.trim().equals("")) appendSer(buf, data2, titles2, cink2, wline2);
if (type == ChartType.LINE_CHART) {
buf.append("");
}
buf.append(" ");
if (type == ChartType.LINE_CHART) {
buf.append(" ");
buf.append(" ");
buf.append(" ");
}
buf.append(" ");
if (type == ChartType.CIRCLE_DIAGRAM) {
buf.append(" ");
}
buf.append(" ");
buf.append(" ");
buf.append(" ");
os.print(buf.toString());
}
private void appendSer(StringBuffer buf, String data, String titles, Color cink, int wline) {
buf.append(" ");
if (type == ChartType.LINE_CHART) {
buf.append(" ");
// buf.append(" ");
}
if (type == ChartType.CIRCLE_DIAGRAM) {
buf.append(" ");
}
buf.append("");
buf.append(titles);
buf.append(" ");
buf.append(data);
buf.append(" ");
}
}