JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java Tools  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:POI excel 呈現方式 [Re:1234]
1234





發文: 146
積分: 0
於 2008-09-18 16:33 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1.
HSSFSheet.shiftRows((int startRow, int endRow, int n)
這個方法應該是把 從startRow到endRow 移到n row吧? 不知道是不是我認知錯誤
本來以為 shiftRows(1,9,0) 應該會把row 0吃掉,結果不是這樣
參數試過幾種組合都不行, 請問一下你要移除某一列參數是怎麼下的??

2.我複製表格是這樣做
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
//功能: 複製sheet中的表格
//參數: sSheet=source, tSheet=target
//傳回: 無
public void copyForm(HSSFSheet sSheet, HSSFSheet tSheet) {
  try{    
    int pageNum = tSheet.getLastRowNum() / sSheet.getLastRowNum() + 1;  //複製到第幾頁
    int rowCountOfOnePage = sSheet.getLastRowNum() + 1;          //每頁資料筆數  
    int numRegions = sSheet.getNumMergedRegions();            //合併儲存格數   
      int rowNumStart = (pageNum - 1) * rowCountOfOnePage;        //第一筆rownum
        
       //合併儲存格
      for (int i = 0; i < numRegions; i++) {
        Region region = sSheet.getMergedRegionAt(i);
          int rf = region.getRowFrom();
          int cf = region.getColumnFrom();        
          int rt = region.getRowTo();
          int ct = region.getColumnTo();
 
          Region rn = new Region(rowNumStart + rf, (short)cf, rowNumStart + rt, (short)ct);
          tSheet.addMergedRegion(rn);
      }
      
      //複製列 
      for(int rowNum = 0; rowNum < rowCountOfOnePage; rowNum++) {
        HSSFRow oldRow = sSheet.getRow(rowNum);
        short rowHeights = oldRow.getHeight();  
      
        //新增列
        HSSFRow newRow = tSheet.createRow(rowNumStart + rowNum);
        newRow.setHeight(rowHeights);
      
        int fcn = oldRow.getFirstCellNum();
        int lcm = oldRow.getLastCellNum(); 
        for(int cellNum = fcn; cellNum < lcm; cellNum++) {
          HSSFCell oldCell = oldRow.getCell((short)cellNum);
          HSSFCellStyle style = oldCell.getCellStyle();       
          int cellType = oldCell.getCellType();
                
          //新增儲存格
          HSSFCell newCell = newRow.createCell((short)cellNum);
          newCell.setCellStyle(style);
        
          if(cellType == HSSFCell.CELL_TYPE_STRING) {
            newCell.setCellValue(oldCell.getStringCellValue());
          } else if(cellType == HSSFCell.CELL_TYPE_NUMERIC) {
            newCell.setCellValue(oldCell.getNumericCellValue());
          }      
        }      
      }
  } catch(Exception e) {
    e.printStackTrace();
  }      
}
但是出現很奇怪的情況,我的資料有50頁但是印出時變成64頁多出一些空白頁(表格分頁都正常沒有吃到下一頁)
經過測試,當複製表格大於36時就會有多出空白頁的情況

3.
我用 setColumnBreak(short column) / setRowBreak(int row) 都是NullPointerException
確定sheet1不是null, setColumnBreak的上一行我用sheet1.getLastRowNum()可以正常取得列數


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
12427 POI excel 呈現方式 1234 54 2008-09-16 11:08
12980 Re:POI excel 呈現方式 TsaiCF 197 2008-09-16 11:59
12317 Re:POI excel 呈現方式 1234 945 2008-09-16 14:59
12273 Re:POI excel 呈現方式 TsaiCF 961 2008-09-16 19:00
12220 Re:POI excel 呈現方式 1234 2500 2008-09-18 16:33
12088 Re:POI excel 呈現方式 LiaoLuke 1944 2008-09-18 17:10
11896 Re:POI excel 呈現方式 TsaiCF 184 2008-09-18 18:28
12065 Re:POI excel 呈現方式 1234 508 2008-09-19 14:08
11776 Re:POI excel 呈現方式 TsaiCF 94 2008-09-19 17:36
12039 Re:POI excel 呈現方式 1234 282 2008-09-19 23:26
» JWorld@TW »  Java Tools

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8