[]
除了MS Excel支持的標準迷你圖之外,SpreadJS還支持級聯迷你圖。GcExcel Java支持將包含級聯迷你圖的SpreadJS文件導出為JSON導入導出、HTML、圖像和PDF格式。本主題討論這些擴展迷你圖以及如何在GcExcel Java中創建它們。
級聯迷你圖通常用于分析一段時間內的價值,如年銷售額、總利潤、凈稅收等。它廣泛用于金融、銷售、法律和建筑行業,僅舉幾個例子。例如,您可以使用級聯迷你圖來比較銷售人員的支出和收入。
GcExcel Java提供了用于創建級聯迷你圖的 CASCADESPARKLINE 公式。
語法
= CASCADESPARKLINE(pointsRange, pointIndex, labelsRange, minimum, maximum, colorPositive, colorNegative, vertical)
參數
參數名稱 | 描述 |
---|---|
pointsRange(必須) | 表示包含值的單元格范圍的引用,如“B2:B8”。 |
pointIndex(必須) | 表示點索引的數字或引用。點索引是 >= 1,例如 1 或 “D2”。 |
LabelsRange(可選) | 表示包含標簽的單元格范圍的引用,如“A2:A8”。默認值為無標簽。 |
Minimum(可選) | 表示顯示區域最小值的數字或參考。默認值是總和(點值之和)的最小值,如-2000。您設置的最小值必須小于默認最小值;否則,使用默認最小值。 |
maximum(可選) | 表示顯示區域最大值的數字或參考。默認值是總和(點值的總和)的最大值,如6000。您設置的最大值必須大于默認最大值;否則,將使用默認最大值。 |
colorPositive(可選) | 表示第一個或最后一個正迷你圖框顏色的字符串(該點的值為正)。默認值為“#8CBF64”。如果第一個或最后一個框表示正值,則框的顏色將設置為 colorPositive 。中間正片框設置為比彩色正片更淺的顏色。 |
colorNegative(可選) | 表示第一個或最后一個負迷你圖框顏色的字符串(該點的值為負)。默認值為“#D6604D”。如果第一個或最后一個框表示負值,則框的顏色將設置為colorNegative。中間負片框設置為比彩色負片更淺的顏色。 |
vertical(可選) | 表示框的方向是垂直還是水平的布爾值。默認值為FALSE。對于一組公式,必須將垂直設置為true或false,因為所有公式都表示整個迷你圖。 |
itemTypeRange(可選) | 表示數據范圍的所有項類型的數組或引用。這些值應為{-、“+”、“=”}或“A1:A7”,它們引用了{“+”、”-“、“=”的值,其中“+”表示正變化,“-”表示負變化,“=”表示總列數。 |
colorTotal(可選) | 一個字符串,當itemTypeRange不存在時表示最后一個小迷你圖框的顏色,或者當ItemType Range存在時表示結果小迷你圖的框的顏色。 |
請參考以下示例代碼,使用公式添加級聯迷你圖。
// Add a cascade sparkline with horizontal bars.
for (int i = 1; i < 8; i++) {
worksheet.getRange(i, 2).setFormula("=CASCADESPARKLINE(B2:B8, ROW() - 1, A2:A8, , , \"#8CBF64\", \"#D6604D\", FALSE)");
}
線條型火花圖展示了任何開支或數據的趨勢,著重強調變化和波動。
語法:
= LINESPARKLINE(data,dataOrientation,[dateAxisData],[dateAxisOrientation],[setting])
參數:
參數名稱 | 描述 |
---|---|
data | 一個范圍引用,代表迷你圖的數據,例如"A1:C3" |
dataOrientation | 一個數字,代表迷你圖數據的方向。以下之一:
|
dateAxisData | 一個范圍引用,代表迷你圖日期軸的數據,例如"D1:F3"。如果沒有dateAxisOrientation,則dateAxisData無效 |
dateAxisOrientation | 一個數字,代表迷你圖日期軸的方向。以下之一:
|
setting | 一個JSON格式的字符串。格式:全名(縮寫)[默認值]:描述 |
設置參數提供了以下大小寫敏感的屬性來設定:
參數名稱 | 描述 |
---|---|
showFirst(sf) [默認:False] | 檢查迷你圖的第一個數據點是否以不同格式顯示。 |
showHigh(sh) [默認:False] | 檢查具有最高值的數據點是否以不同格式顯示在迷你圖上。 |
showLast(slast) [默認:False] | 檢查迷你圖的最后一個數據點是否以不同格式顯示。 |
showLow(slow) [默認:False] | 檢查具有最低值的數據點是否以不同格式顯示在迷你圖上。 |
showNegative(sn) [默認:False] | 檢查負數數據點是否以不同格式顯示在迷你圖上。 |
showMarkers(sm) [默認:False] | 檢查迷你圖是否顯示數據標記。 |
axisColor(ac) [默認:#000000] | 軸的顏色。 |
firstMarkerColor(fmc) [默認:#95B3D7] | 迷你圖第一個數據點的顏色。 |
highMarkerColor(hmc) [默認:#0000FF] | 迷你圖最高數據點的顏色。 |
lastMarkerColor(lastmc) [默認:#95B3D7] | 迷你圖最后一個數據點的顏色。 |
lowMarkerColor(lowmc) [默認:#0000FF] | 迷你圖最低數據點的顏色。 |
markersColor(mc) [默認:#244062] | 迷你圖數據標記的顏色。 |
negativeColor(nc) [默認:#A52A2A] | 迷你圖負數數據點的顏色。 |
seriesColor(sc) [默認:#244062] | 迷你圖的顏色。 |
lineWeight(lw) [默認:1.0] | 表示迷你圖的線寬,線寬以點為單位測量。線寬必須大于或等于零。 |
displayXAxis(dxa) [默認:False] | 表示是否顯示迷你圖的水平軸。 |
displayEmptyCellsAs(deca) [默認:0] | 表示如何顯示空白單元格。 - 0: 對于數據系列中的空白值留出空隙,這將導致線條斷開。 - 1: 將數據系列中的空白值處理為零值,因此線條會降至零值數據點處。 - 2: 使用連接元素填充空白值在數據系列中留下的空隙,而不是留下空隙。 |
displayHidden(dh) [默認:False] | 表示隱藏單元格中的數據是否被繪制到迷你圖上。 |
manualMax(mmax)[默認:0] | 表示迷你圖垂直軸的最大值。如果maxAxisType不等于'自定義(2)',則軸設置為零。 |
manualMin(mmin) [默認:0] | 表示迷你圖垂直軸的最小值。如果minAxisType不等于'自定義(2)',則軸設置為零。 |
maxAxisType(maxat) [默認:0] | 表示垂直軸最大值的計算方式。 - 0: 指定迷你圖的垂直軸最小值或最大值自動計算,以便可以將具有最小或最大值的數據點顯示在繪圖區域中。 - 2: 指定迷你圖的垂直軸最小值或最大值由manualMin屬性或manualMax屬性指定。 |
minAxisType(minat) [默認:0] | 表示垂直軸最小值的計算方式,與maxAxisType類型類似。 |
rightToLeft(rtl) [默認:False] | 表示迷你圖組中的每個迷你圖是否以從右到左的方式顯示。 |
參考以下示例代碼,使用公式添加線型迷你圖:
// Create a new workbook.
Workbook workbook = new Workbook();
// Get active sheet.
IWorksheet worksheet = workbook.getActiveSheet();
// Add values to the table.
worksheet.getRange("A1").setValue("Sales by Country");
worksheet.getRange("A2:F5").setValue(new Object[][]
{
{"Countries", 2016, 2017, 2018, 2019, 2020},
{"China", 243000, 291000, 465000, 282000, 213000},
{"India", 448000, 358000, 332000, 489000, 302000},
{"UnitedStates", 439000, 276000, 413000, 396000, 392000}
});
worksheet.getRange("G2").setValue("SparkLine");
// Add line sparkline formula.
worksheet.getRange("G3:G5").setFormula("=LINESPARKLINE(B3:F3,1,,,\"{showMarkers:TRUE,lineWeight:1.5,markersColor:#7030a0}\")");
worksheet.getRange("A1:G1").merge();
worksheet.getRange("A1").getInterior().setColor(Color.GetPurple());
worksheet.getRange("A1").getFont().setColor(Color.GetWhite());
worksheet.getRange("A1").setHorizontalAlignment(HorizontalAlignment.Center);
worksheet.getRange("A1:G5").getBorders().setLineStyle(BorderLineStyle.Thin);
worksheet.getRange("B3:F5").setNumberFormat("$#,##0");
worksheet.getRange("A1:G2").getFont().setBold(true);
worksheet.getRange("A1").getFont().setSize(15);
worksheet.getRange("A2:G5").getFont().setSize(13);
worksheet.getRange("A:F").autoFit();
worksheet.getRange("1:5").setRowHeight(25);
worksheet.getRange("G1").setColumnWidth(30);
worksheet.getPageSetup().setOrientation(PageOrientation.Landscape);
// Save as a PDF document.
workbook.save("LineSparkline.pdf");
// Save as a .sjs file.
workbook.save("LineSparkline.sjs");
柱狀火迷你圖利用條形圖來可視化展示數據的分布和變化。正數數據點會位于x軸之上,而負數數據點則會顯示在x軸之下。
語法:
= COLUMNSPARKLINE(data,dataOrientation,[dateAxisData],[dateAxisOrientation],[setting])
參數:
參數名稱 | 描述 |
---|---|
data | 一個范圍引用,代表迷你圖的數據,例如 "A1:C3"。 |
dataOrientation | 一個數字,代表迷你圖數據的方向。可選如下之一:<ul><li>垂直:0(默認)。</li><li>水平:1。</li></ul> |
dateAxisData | 一個范圍引用,代表迷你圖日期軸的數據,例如 "D1:F3"。如果沒有dateAxisOrientation,則dateAxisData無效。 |
dateAxisOrientation | 一個數字,代表迷你圖日期軸的方向??蛇x如下之一: 1. 垂直 - 0 2. 水平 - 1 |
setting | 一個JSON格式的字符串。格式:全名(縮寫)[默認值]:描述 |
設置參數提供了以下區分大小寫的屬性來設定:
參數名稱 | 描述 |
---|---|
showFirst(sf)[默認: False] | 檢查迷你圖的第一個數據點是否以不同格式顯示。 |
showHigh(sh)[默認: False] | 檢查最高數值的數據點是否以不同格式顯示于迷你圖。 |
showLast(slast)[默認: False] | 檢查最后一個數據點是否以不同格式顯示于迷你圖。 |
showLow(slow)[默認: False] | 檢查最低數值的數據點是否以不同格式顯示于迷你圖。 |
showNegative(sn)[默認: False] | 檢查負數數據點是否以不同格式顯示于迷你圖。 |
showMarkers(sm)[默認: False] | 檢查迷你圖是否顯示數據標記。 |
axisColor(ac)[默認: #000000] | 軸的顏色。 |
firstMarkerColor(fmc)[默認: #95B3D7] | 迷你圖第一個數據點的顏色。 |
highMarkerColor(hmc)[默認: #0000FF] | 迷你圖最高數據點的顏色。 |
lastMarkerColor(lastmc)[默認: #95B3D7] | 迷你圖最后一個數據點的顏色。 |
lowMarkerColor(lowmc)[默認: #0000FF] | 迷你圖最低數據點的顏色。 |
markersColor(mc)[默認: #244062] | 迷你圖數據標記的顏色。 |
negativeColor(nc)[默認: #A52A2A] | 迷你圖負數數據點的顏色。 |
seriesColor(sc)[默認: #244062] | 迷你圖的顏色。 |
lineWeight(lw)[默認: 1.0] | 表示迷你圖的線寬,線寬單位為磅,必須大于等于零。 |
displayXAxis(dxa)[默認: False] | 表示是否顯示迷你圖的橫軸。 |
displayEmptyCellsAs(deca)[默認: 0] | 表示如何顯示空單元格。 - 0: 在數據系列中為空值留出間隔,導致線條分段。 - 1: 將數據系列中的空值處理為零值,使得線條在零值數據點處下降到零。 - 2: 用連接元素填充空值的間隔,而不是在數據系列中為空值留出間隔。 |
displayHidden(dh)[默認: False] | 表示隱藏單元格中的數據是否用于繪制迷你圖。 |
manualMax(mmax)[默認: 0] | 表示迷你圖垂直軸的最大值。如果 maxAxisType 不等于 '自定義(2)',則軸設為零。 |
manualMin(mmin)[默認: 0] | 表示迷你圖垂直軸的最小值。如果 minAxisType 不等于 '自定義(2)',則軸設為零。 |
maxAxisType(maxat)[默認: 0] | 表示垂直軸最大值的計算方式。 - 0: 指定迷你圖的垂直軸最小值或最大值自動計算,以便可以顯示具有最小或最大值的數據點。 - 2: 指定迷你圖的垂直軸最小值或最大值由 manualMin 屬性或 manualMax 屬性指定。 |
minAxisType(minat)[默認: 0] | 表示垂直軸最小值的計算方式,類似于 maxAxisType 類型。 |
rightToLeft(rtl)[默認: False] | 表示迷你圖組中的每個迷你圖是否以從右向左的方式顯示。 |
參考以下示例代碼使用公式添加柱狀迷你圖:
// Create a new workbook.
Workbook workbook = new Workbook();
// Get active sheet.
IWorksheet worksheet = workbook.getActiveSheet();
// Add values to the table.
worksheet.getRange("A1").setValue("Sales Data");
worksheet.getRange("A2:F6").setValue(new Object[][]
{
{"Salesperson", "Jan", "Feb", "Mar", "Apr", "May"},
{"Courtney Graves", 76000, 68250, 72000, 99750, 45500},
{"Crystal Cross", 118750, 89250, 121250, 92500, 60750},
{"Jodi Hall", 75500, 56500, 65500, 62750, 77500},
{"Andrew James", 76750, 108500, 88000, 55750, 106000}
});
worksheet.getRange("G2").setValue("SparkLine");
// Add column sparkline formula.
worksheet.getRange("G3:G6").setFormula("=COLUMNSPARKLINE(B3:F3,1,,,\"{showMarkers:TRUE}\")");
worksheet.getRange("A1:G1").merge();
worksheet.getRange("A1").getInterior().setColor(Color.GetPurple());
worksheet.getRange("A1").getFont().setColor(Color.GetWhite());
worksheet.getRange("A1").setHorizontalAlignment(HorizontalAlignment.Center);
worksheet.getRange("A1:G6").getBorders().setLineStyle(BorderLineStyle.Thin);
worksheet.getRange("B3:F6").setNumberFormat("$#,##0");
worksheet.getRange("A1:G2").getFont().setBold(true);
worksheet.getRange("A1").getFont().setSize(15);
worksheet.getRange("A2:G6").getFont().setSize(13);
worksheet.getRange("A:F").autoFit();
worksheet.getRange("1:6").setRowHeight(25);
worksheet.getRange("G1").setColumnWidth(30);
worksheet.getPageSetup().setOrientation(PageOrientation.Landscape);
// Save as a PDF document.
workbook.save("ColumnSparkline.pdf");
// Save as a .sjs file.
workbook.save("ColumnSparkline.sjs");
盈虧迷你圖利用條形圖來直觀地表示正負值。正值(贏)位于x軸之上,而負值(虧)位于x軸之下。
這種盈虧迷你圖支持兩種狀態的值,例如真或假,或是 1 或 -1。例如,在游戲結果中,1 代表贏,而 -1 代表虧。
語法:
= WINLOSSSPARKLINE(data,dataOrientation,[dateAxisData],[dateAxisOrientation],[setting])
參數:
參數名稱 | 描述 |
---|---|
data | 數據范圍引用,代表迷你圖的數據,例如"A1:C3"。 |
dataOrientation | 一個數字,代表迷你圖數據的方向??蛇x如下之一: 垂直:0(默認) 水平:1 |
dateAxisData | 日期軸數據范圍引用,代表迷你圖的日期軸數據,例如"D1:F3"。如果沒有dateAxisOrientation,則dateAxisData無效。 |
dateAxisOrientation | 一個數字,代表迷你圖日期軸的方向。可選如下之一: 垂直:0 水平:1 |
setting | JSON格式的字符串。格式:全名(縮寫)[默認值]:描述 |
設置參數提供了以下區分大小寫的屬性來設定:
參數名稱 | 描述 |
---|---|
showFirst(sf)[默認: False] | 檢查迷你圖的第一個數據點是否以不同格式顯示。 |
showHigh(sh)[默認: False] | 檢查最高數值的數據點是否以不同格式顯示于迷你圖。 |
showLast(slast)[默認: False] | 檢查最后一個數據點是否以不同格式顯示于迷你圖。 |
showLow(slow)[默認: False] | 檢查最低數值的數據點是否以不同格式顯示于迷你圖。 |
showNegative(sn)[默認: False] | 檢查負數數據點是否以不同格式顯示于迷你圖。 |
showMarkers(sm)[默認: False] | 檢查迷你圖是否顯示數據標記。 |
axisColor(ac)[默認: #000000] | 軸的顏色。 |
firstMarkerColor(fmc)[默認: #95B3D7] | 迷你圖第一個數據點的顏色。 |
highMarkerColor(hmc)[默認: #0000FF] | 迷你圖最高數據點的顏色。 |
lastMarkerColor(lastmc)[默認: #95B3D7] | 迷你圖最后一個數據點的顏色。 |
lowMarkerColor(lowmc)[默認: #0000FF] | 迷你圖最低數據點的顏色。 |
markersColor(mc)[默認: #244062] | 迷你圖數據標記的顏色。 |
negativeColor(nc)[默認: #A52A2A] | 迷你圖負數數據點的顏色。 |
seriesColor(sc)[默認: #244062] | 迷你圖的顏色。 |
lineWeight(lw)[默認: 1.0] | 表示迷你圖的線寬,線寬單位為磅,必須大于等于零。 |
displayXAxis(dxa)[默認: False] | 表示是否顯示迷你圖的橫軸。 |
displayEmptyCellsAs(deca)[默認: 0] | 表示如何顯示空單元格。 - 0: 在數據系列中為空值留出間隔,導致線條分段。 - 1: 將數據系列中的空值處理為零值,使得線條在零值數據點處下降到零。 - 2: 用連接元素填充空值的間隔,而不是在數據系列中為空值留出間隔。 |
displayHidden(dh)[默認: False] | 表示隱藏單元格中的數據是否用于繪制迷你圖。 |
manualMax(mmax)[默認: 0] | 表示迷你圖垂直軸的最大值。如果 maxAxisType 不等于 '自定義(2)',則軸設為零。 |
manualMin(mmin)[默認: 0] | 表示迷你圖垂直軸的最小值。如果 minAxisType 不等于 '自定義(2)',則軸設為零。 |
maxAxisType(maxat)[默認: 0] | 表示垂直軸最大值的計算方式。 - 0: 指定迷你圖的垂直軸最小值或最大值自動計算,以便可以顯示具有最小或最大值的數據點。 - 2: 指定迷你圖的垂直軸最小值或最大值由 manualMin 屬性或 manualMax 屬性指定。 |
minAxisType(minat)[默認: 0] | 表示垂直軸最小值的計算方式,類似于 maxAxisType 類型。 |
rightToLeft(rtl)[默認: False] | 表示迷你圖組中的每個迷你圖是否以從右向左的方式顯示。 |
參考以下示例代碼使用公式添加盈虧迷你圖:
// Create a new workbook.
Workbook workbook = new Workbook();
// Get active sheet.
IWorksheet worksheet = workbook.getActiveSheet();
// Add values to the table.
worksheet.getRange("A1").setValue("Employee Performance");
worksheet.getRange("A2:F5").setValue(new Object[][]
{
{"Team Member", "Wk1", "Wk2", "Wk3", "Wk4", "Wk5"},
{"Pamela Nelson", 5, 1, 7, 5, 8},
{"Gabriel Reed", 1, 2, 4, 2, 9},
{"Christina Robbins", 4, 10, 8, 5, 10}
});
worksheet.getRange("H2").setValue("Target (tasks per week):");
worksheet.getRange("I2").setValue(5);
worksheet.getRange("G2").setValue("SparkLine");
// Add win-loss sparkline formula. Use Formula2 as the formula contains a dynamic array formula (B3:F3-$I$2).
worksheet.getRange("G3:G5").setFormula2("=WINLOSSSPARKLINE(B3:F3-$I$2,1,,,\"{showNegative:TRUE}\")");
worksheet.getRange("A1:G1").merge();
worksheet.getRange("A1").getInterior().setColor(Color.GetPurple());
worksheet.getRange("A1").getFont().setColor(Color.GetWhite());
worksheet.getRange("A1").setHorizontalAlignment(HorizontalAlignment.Center);
worksheet.getRange("A1:G5").getBorders().setLineStyle(BorderLineStyle.Thin);
worksheet.getRange("A1:G2").getFont().setBold(true);
worksheet.getRange("A1").getFont().setSize(15);
worksheet.getRange("A2:G5").getFont().setSize(13);
worksheet.getRange("H2:I2").getFont().setBold(true);
worksheet.getRange("H2:I2").getFont().setSize(13);
worksheet.getRange("A:F").autoFit();
worksheet.getRange("1:5").setRowHeight(25);
worksheet.getRange("G1:H1").setColumnWidth(30);
worksheet.getPageSetup().setOrientation(PageOrientation.Landscape);
// Save as a PDF document.
workbook.save("WinLossSparkline.pdf");
// Save as a .sjs file.
workbook.save("WinLossSparkline.sjs");
注意:
使用 IRange 接口的 getValue 方法獲取公式結果會返回代表火花線對象的 ISparkLineObject。ISparkLineObject 接口的 toJson 方法可以返回與該對象相對應的 JSON 字符串。
使用 IRange 接口的 getText 方法獲取公式結果會返回一個空字符串。
MS Excel 不支持 SPARKLINE 公式,因此此公式的計算結果會是"#NAME?"。
用戶可以導入和導出包含火花線的 JSON 或 .sjs 文件。
GcExcel 支持將火花線公式導出為 PDF、HTML 或圖像。
如果公式有誤,其結果將是 CalcError.Value。