當前位置:成語大全網 - 書法字典 - 如何編寫easypoi合並列

如何編寫easypoi合並列

1

2

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

四十二個

43

四十四

45

46

47

48

四十九個

50

51

五十二個

53

54

55

五十六歲

57

58

59

60

61

62

63

64

65

66

67

六十八

六十九

70

71

七十二個

73

74

75

76

77

七十八

79

80

81

82

83

84

八十五歲

86

87

88

八十九

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

包org . jeecgframe . poi . util;

導入Java . util . ArrayList;

導入Java . util . hashmap;

導入Java . util . list;

導入Java . util . map;

導入Java . util . set;

導入org . Apache . commons . lang 3 . string utils;

導入org . Apache . poi . ss . user model . cell;

導入org . Apache . poi . ss . user model . row;

導入org . Apache . poi . ss . user model . sheet;

import org . Apache . poi . ss . util . cellrangeaddress;

import org . JEE cgframework . poi . excel . entity . params . merge entity;

/**

*垂直合並單元格工具類

* @作者玨月

* @ date 2065438+June 265438+2005 11:21:40am

*/

公共最終類PoiMergeCellUtil {

private PoiMergeCellUtil(){

}

/**

*垂直合並具有相同內容的單元格。

*

* @param工作表

* @param mergeMap鍵列,值相關列,不為null。

* @param startRow起始行

*/

公共靜態空合並單元格(Sheet sheet,Map & ltInteger,int【】》;mergeMap,int startRow ){

地圖& ltInteger,MergeEntity & gtmergeDataMap = new HashMap & ltInteger,MergeEntity & gt();

if(merge map . size()= = 0 ){

返回;

}

Row行;

設置& lt整數& gtsets = merge map . keyset();

字符串文本;

for(int I = startRow;我& lt= sheet . getlastrownum();i++) {

row = sheet . getrow(I);

for(整數索引:集){

if(row . get cell(index)= = null ){

merge data map . get(index)。setEndRow(I);

}否則{

text = row . get cell(index)。getStringCellValue();

if(string utils . isnotempty(text)){

hanlderMergeCells(index,I,text,mergeDataMap,sheet,row . get cell(index),

merge map . get(index));

}否則{

mergeCellOrContinue(index,mergeDataMap,sheet);

}

}

}

}

if(merge data map . size()& gt;0) {

for(整數索引:merge data map . keyset()){

sheet . addmergedregion(new cell range address(merge data map . get(index)。getStartRow(),

merge data map . get(index)。getEndRow(),index,index));

}

}

}

/**

*處理合並單元格

*

* @param index

* @param rowNum

* @param text

* @param mergeDataMap

* @param工作表

* @param單元格

* @param delys

*/

私有靜態void hanlderMergeCells(整數索引,int rowNum,字符串文本,

地圖& ltInteger,MergeEntity & gt合並數據映射,工作表工作表,

Cell cell,int【】delys ){

if(merge data map . contains key(index)){

if(checkIsEqualByCellContents(merge data map . get(index),text,cell,delys,rowNum)({

merge data map . get(index)。setEndRow(rowNum);

}否則{

sheet . addmergedregion(new cell range address(merge data map . get(index)。getStartRow(),

merge data map . get(index)。getEndRow(),index,index));

merge data map . put(index,createMergeEntity(text,rowNum,cell,delys));

}

}否則{

merge data map . put(index,createMergeEntity(text,rowNum,cell,delys));

}

}

/**

*判斷角色何時為空。

*

* @param index

* @param mergeDataMap

* @param工作表

*/

私有靜態void mergeCellOrContinue(整數索引,Map & ltInteger,MergeEntity & gtmergeDataMap,

工作表工作表)

if(merge data map . contains key(index)

& amp& ampmerge data map . get(index)。getEndRow()!= merge data map . get(index)。getStartRow()){

sheet . addmergedregion(new cell range address(merge data map . get(index)。getStartRow(),

merge data map . get(index)。getEndRow(),index,index));

merge data map . remove(index);

}

}

私有靜態merge entity createMergeEntity(String text,int rowNum,Cell cell,int【】delys ){

merge entity merge entity = new merge entity(text,rowNum,rowNum);

列表& lt字符串& gtlist = new ArrayList & lt字符串& gt(delys . length);

merge entity . setrelylist(list);

for(int I = 0;我& ltdelys.lengthi++) {

list . add(getCellNotNullText(cell,delys【I】,rowNum);

}

返回mergeEntity

}

私有靜態布爾checkIsEqualByCellContents(merge entity merge entity,String text,

Cell cell,int【】delys,int rowNum ){

//沒有依賴關系

if(delys = = null | | delys . length = = 0 ){

返回mergeEntity.getText()。equals(文本);

}

//存在依賴關系。

if(merge entity . gettext()。等於(文本)){

for(int I = 0;我& ltdelys.lengthi++) {

如果(!getCellNotNullText(單元格,delys【I】,rowNum)。等於(

mergeEntity.getRelyList()。get(I))){

返回false

}

}

返回true

}

返回false

}

/**

*獲取單元格的值,並確保單元格必須有值,或向上查詢。

*

* @param單元格

* @param index

* @param rowNum

* @返回

*/

私有靜態字符串getCellNotNullText(單元格Cell,int index,int rowNum ){

String temp = cell.getRow()。getCell(index)。getStringCellValue();

while(string utils . isempty(temp)){

temp = cell.getRow()。getSheet()。getRow(-rowNum)。getCell(index)。getStringCellValue();

}

返回溫度;

}

}