国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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(); 
  
  
 
  
}

總結

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕第二十六页页 | 亚洲视频在线播放免费 | 国产成人精品免费 | 99久久久无码国产精品 | 亚洲二区在线观看 | 综合久久网 | 日韩视频在线观看 | 日韩欧美国产一区二区 | 国产激情午夜 | 久久久久久久久久久免费 | 黄网站在线观看 | 男女全黄一级一级高潮免费看 | 亚洲国产精品一区二区三区 | 日韩一二三 | 亚洲精品在线成人 | 中文字幕日韩久久 | 精品国产乱码久久久久久牛牛 | 在线免费观看av电影 | 天堂在线www| 成人免费aaa | 国产日韩视频在线观看 | 午夜国产 | 免费在线观看黄 | 亚洲天堂一区二区 | 欧州一级片 | 欧美午夜精品久久久久久浪潮 | 日韩视频免费在线观看 | 一区二区三区动漫 | 亚洲视频 欧美视频 | 亚洲成人免费影院 | 国产欧美日韩 | 婷婷精品久久久久久久久久不卡 | 国产一区不卡 | 久久黄视频 | 国产乱码久久久久久一区二区 | 天天操天天插 | 91福利视频免费 | 看a网站| 欧美操| 久久精品久久久久久久久久16 | 免费观看黄色 |