All Downloads are FREE. Search and download functionalities are using the official Maven repository.

kz.greetgo.msoffice.xlsx.gen.Chart Maven / Gradle / Ivy

There is a newer version: 0.5.9
Show newest version
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(""); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy