在這邊我輸出Excel檔案時,將利用JXCell來建立條件化格式,如此一來可以動態地因應資料
的多寡來定義條件化格式的範圍。
假設,我要輸出的條件化格式如下:
一開始先讀取樣版檔案,再來由於套用的範圍只會定義一種規則,因此在new時只給予1的
大小即可。
再來設定type為TypeCell規則樣式,並且定義此儲存格為不等於0時,將設定該儲存格會給予
一個顏色!
最後,設定這個儲存格要套用在哪個範圍($F$5:$F$11)之下。
PS. setFormula1 method在此只針對第一個參數給予定義,第二、第三參數無特別指定!
API定義如下:
因此,在Demo時,當您在$F$5:$F$11儲存格內輸入非0的數字,該格就會被標記一個顏色!
2. 公式的條件化格式
一樣地,由於套用的範圍只會定義一種規則,因此在new時只給予1的大小即可。
再來,在setType時指定為TypeFormula,並且在setFormula1時,寫入公式"$F1<>0",1可以想
成起始位置,若搭配選擇的範圍($A$5:$C$11),在產生檔案後會對應成"$F5<>0"。
最後,這兩個規則相組合,會產生當您在$F$5輸入一非0的數字時,$A$5:$C$5會給予顏色!
因為公式設成$F5為鎖定F,因此數字row的部分會自動遞移向下,即$F$6輸入相對地造成
$A$6:$C$6會給予顏色!
如下圖:
PS. 為什麼針對在$F$5輸入會一次造成$A$5:$C$5三格都有顏色,原因在於公式內定義$F為
鎖定,若今天設定"F5<>0",只會在A5有顏色,而相對地B5要有顏色就必須在G5輸入了。可
以自行操作看看!
的多寡來定義條件化格式的範圍。
假設,我要輸出的條件化格式如下:
這邊分成兩種規則,建立公式型態及儲存格型態。
1. 儲存格的條件化格式
View m_view=new View();
m_view.read("D:\\template.xls");
ConditionFormat condfmt[]=new ConditionFormat[1];
condfmt[0].setType(ConditionFormat.TypeCell);
condfmt[0].setOperator(ConditionFormat.OperatorNotEqual);
condfmt[0].setFormula1("0", 0, 0);
CellFormat cf=condfmt[0].getCellFormat();
cf.setPattern((short)1);
cf.setPatternFG(0xFFCC99);
condfmt[0].setCellFormat(cf);
m_view.setSelection(4, 5, 10, 5);
m_view.setConditionalFormats(condfmt);
一開始先讀取樣版檔案,再來由於套用的範圍只會定義一種規則,因此在new時只給予1的
大小即可。
再來設定type為TypeCell規則樣式,並且定義此儲存格為不等於0時,將設定該儲存格會給予
一個顏色!
最後,設定這個儲存格要套用在哪個範圍($F$5:$F$11)之下。
PS. setFormula1 method在此只針對第一個參數給予定義,第二、第三參數無特別指定!
API定義如下:
public void setFormula1(java.lang.String formula, int row, int col) throws java.lang.Exception
因此,在Demo時,當您在$F$5:$F$11儲存格內輸入非0的數字,該格就會被標記一個顏色!
2. 公式的條件化格式
...
ConditionFormat condfmt1[]=new ConditionFormat[1];
condfmt1[0]= m_view.CreateConditionFormat();
condfmt1[0].setType(ConditionFormat.TypeFormula);
condfmt1[0].setFormula1("$F1<>0", 0, 0);
cf=condfmt1[0].getCellFormat();
cf.setPattern((short)1);
cf.setPatternFG(0xFFCC99);
condfmt1[0].setCellFormat(cf);
m_view.setSelection(4, 0, 10, 2);
m_view.setConditionalFormats(condfmt1);
m_view.write("D:\\output.xls");
一樣地,由於套用的範圍只會定義一種規則,因此在new時只給予1的大小即可。
再來,在setType時指定為TypeFormula,並且在setFormula1時,寫入公式"$F1<>0",1可以想
成起始位置,若搭配選擇的範圍($A$5:$C$11),在產生檔案後會對應成"$F5<>0"。
最後,這兩個規則相組合,會產生當您在$F$5輸入一非0的數字時,$A$5:$C$5會給予顏色!
因為公式設成$F5為鎖定F,因此數字row的部分會自動遞移向下,即$F$6輸入相對地造成
$A$6:$C$6會給予顏色!
如下圖:
PS. 為什麼針對在$F$5輸入會一次造成$A$5:$C$5三格都有顏色,原因在於公式內定義$F為
鎖定,若今天設定"F5<>0",只會在A5有顏色,而相對地B5要有顏色就必須在G5輸入了。可
以自行操作看看!
留言
張貼留言