激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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 毛片国产 | 久久国产精品二国产精品中国洋人 | 欧美成人精品h版在线观看 国产一级淫片在线观看 | 久久精品日产高清版的功能介绍 | 欧美a在线看 | 精品亚洲一区二区三区 | 在线播放亚洲精品 | 羞羞漫画无遮挡观看 | 国产一区二区三区手机在线 | 国产精品久久久久国产精品三级 | 91看片成人 | 美女一级毛片 | 国产美女白浆 | 国产精品久久久乱弄 | 羞羞网站在线观看入口免费 | 国产午夜亚洲精品午夜鲁丝片 | 国产一区二区免费在线观看视频 | 午夜色片 | 看免费黄色大片 | 毛片免费观看完整版 | 中文字幕免费播放 | av电影免费在线 | 在线播放一级片 | 精品国产一区二区三区在线观看 | 一级做a爱片毛片免费 | 日韩精品久 | 国产精品区在线12p 午夜视频色 | 午夜国产小视频 | 久久网综合 | 欧美女人天堂 | 激情免费视频 | 成人富二代短视频 | 一区在线视频观看 | 国产91在线亚洲 |