一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java實現合并單元格的同時并導出excel示例

java實現合并單元格的同時并導出excel示例

2020-08-29 14:10chuquan.ou Java教程

這篇文章主要給大家介紹了關于java實現合并單元格的同時并導出excel的相關資料,文中先進行了簡單的介紹,之后給出了詳細的示例代碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。

介紹

POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能。POI可以操作的文檔格式有excel,word,powerpoint等,POI進行跨行需要用到對象HSSFSheet對象,現在就當我們程序已經定義了一個HSSFSheet對象sheet。

跨第1行第1個到第2個單元格的操作為

java" id="highlighter_539954">
?
1
sheet.addMergedRegion(new Region(0,(short)0,0,(short)1));

跨第1行第1個到第2行第1個單元格的操作為

?
1
sheet.addMergedRegion(new Region(0,(short)0,1,(short)0));

重點注意事項:

     1.單元格CELL和ROW對象下標都是從0開始的。

     2.單元格合并時Region(1,2,3,4)第1個值的行號必須要比3位置的行號小,如果大于3就不能正常合并單元格

     3.合并單元格的時候要合并的單單元格必須先創建,這樣方便后面再次獲取這個單元格來填充數據,主要就是因為合并時不能由后向前進行合并引起的。

示例代碼

?
1
2
3
4
5
6
7
8
9
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
import java.io.IOException;
 
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.Region;
 
 
public class ExcelTest { 
  
 /**
  * @param args
  */
 public static void main(String[] args) throws IOException { 
  
  try
   HSSFWorkbook wb = new HSSFWorkbook(); 
   HSSFSheet sheet = wb.createSheet("new sheet"); 
   HSSFCellStyle style = wb.createCellStyle(); // 樣式對象 
  
   style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直 
   style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平 
   HSSFRow row = sheet.createRow((short) 0); 
   HSSFRow row2 = sheet.createRow((short) 1); 
  
   sheet.addMergedRegion(new Region(0, (short) 0, 1, (short) 0)); 
   HSSFCell ce = row.createCell((short) 0); 
   ce.setEncoding(HSSFCell.ENCODING_UTF_16);// 中文處理 
   ce.setCellValue("項目\\日期"); // 表格的第一行第一列顯示的數據 
   ce.setCellStyle(style); // 樣式,居中 
   int num = 0
   for (int i = 0; i < 9; i++) { // 循環9次,每一次都要跨單元格顯示 
    // 計算從那個單元格跨到那一格 
    int celln = 0
    int celle = 0
    if (i == 0) { 
     celln = 0
     celle = 1
    } else
     celln = (i * 2); 
     celle = (i * 2 + 1); 
    
    // 單元格合并 
    // 四個參數分別是:起始行,起始列,結束行,結束列 
    sheet.addMergedRegion(new Region(0, (short) (celln + 1), 0
      (short) (celle + 1))); 
    HSSFCell cell = row.createCell((short) (celln + 1)); 
    cell.setCellValue("merging" + i); // 跨單元格顯示的數據 
    cell.setCellStyle(style); // 樣式 
    // 不跨單元格顯示的數據,如:分兩行,上一行分別兩格為一格,下一行就為兩格,“數量”,“金額” 
    HSSFCell cell1 = row2.createCell((short) celle); 
    HSSFCell cell2 = row2.createCell((short) (celle + 1)); 
    cell1.setEncoding(HSSFCell.ENCODING_UTF_16); 
    cell1.setCellValue("數量"); 
    cell1.setCellStyle(style); 
    cell2.setEncoding(HSSFCell.ENCODING_UTF_16); 
    cell2.setCellValue("金額"); 
    cell2.setCellStyle(style); 
    num++; 
   
  
   // 在后面加上合計百分比 
  
   // 合計 在最后加上,還要跨一個單元格 
   sheet.addMergedRegion(new Region(0, (short) (2 * num + 1), 0
     (short) (2 * num + 2))); 
   HSSFCell cell = row.createCell((short) (2 * num + 1)); 
   cell.setEncoding(HSSFCell.ENCODING_UTF_16); 
   cell.setCellValue("合計"); 
   cell.setCellStyle(style); 
   HSSFCell cell1 = row2.createCell((short) (2 * num + 1)); 
   HSSFCell cell2 = row2.createCell((short) (2 * num + 2)); 
   cell1.setEncoding(HSSFCell.ENCODING_UTF_16); 
   cell1.setCellValue("數量"); 
   cell1.setCellStyle(style); 
   cell2.setEncoding(HSSFCell.ENCODING_UTF_16); 
   cell2.setCellValue("金額"); 
   cell2.setCellStyle(style); 
  
   // 百分比 同上 
   sheet.addMergedRegion(new Region(0, (short) (2 * num + 3), 0
     (short) (2 * num + 4))); 
   HSSFCell cellb = row.createCell((short) (2 * num + 3)); 
   cellb.setEncoding(HSSFCell.ENCODING_UTF_16); 
    
   cellb.setCellValue("百分比"); 
   cellb.setCellStyle(style); 
    
   HSSFCell cellb1 = row2.createCell((short) (2 * num + 3)); 
   HSSFCell cellb2 = row2.createCell((short) (2 * num + 4)); 
   cellb1.setEncoding(HSSFCell.ENCODING_UTF_16); 
   cellb1.setCellValue("數量"); 
   cellb1.setCellStyle(style); 
   cellb2.setEncoding(HSSFCell.ENCODING_UTF_16); 
   cellb2.setCellValue("金額"); 
   cellb2.setCellStyle(style); 
  
   /***這里是問題的關鍵,將這個工作簿寫入到一個流中就可以輸出相應的名字,這里需要寫路徑就ok了。
   FileOutputStream fileOut = new FileOutputStream("workbook.xls"); 
   wb.write(fileOut); 
   fileOut.close();
    **/
    
    
   /**第二種是輸出到也面中的excel名稱
    * pName="欄目統計表";
 response.reset();
 response.setContentType("application/x-msdownload");
 response.setHeader("Content-Disposition","attachment; filename="+new String(pName.getBytes("gb2312"),"ISO-8859-1")+".xls");
 ServletOutputStream outStream=null;
 
 try{
  outStream = response.getOutputStream();
  wb.write(outStream);
 }catch(Exception e)
 {
  e.printStackTrace();
 }finally{
  outStream.close();
 }
    * */
   System.out.print("OK"); 
  } catch (Exception ex) { 
   ex.printStackTrace(); 
  
  
 
  
}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本天堂视频在线观看 | 日本欧美大码a在线视频播放 | 成人福利在线观看 | 男人躁女人过程 | 国产亚洲精品九九久在线观看 | 色综合天天综合网看在线影院 | 韩日理论片| 国产精品视频第一页 | 9re视频这里只有精品 | 美女无遮挡 | 国产亚洲玖玖玖在线观看 | 日韩一级片在线观看 | 色噜噜亚洲男人的天堂www | 好大好粗好爽 | gay小太正初精 | 亚洲 欧美 日韩 国产 视频 | 成 人 亚洲 综合天堂 | 91茄子| 天天狠天天透 | 亚飞与亚基高清国语在线观看 | 99热在这里只有精品 | 秀婷程仪公欲息肉婷在线观看 | ccc在线在线36| 国产精品视频免费视频 | 免费看片黄| 亚洲午夜久久久久久91 | 亚洲精品无码不卡在线观看 | 99精品视频在线观看免费播放 | 亚洲精品αv一区二区三区 亚洲精品91大神在线观看 | 亚洲日本中文字幕天堂网 | 国产婷婷综合丁香亚洲欧洲 | 无限资源在线观看播放 | 国产色司机在线视频免费观看 | 青青青国产| 色男人影院 | 9191久久 | 乌克兰一级毛片9一18 | 天天久久综合 | 天天爱综合网 | 男gay网站视频免费观看 | 欧美一区二区三区在线观看不卡 |