導航:首頁 > 編程語言 > javapoi合並單元格

javapoi合並單元格

發布時間:2023-05-11 20:13:49

java poi xwpf操作word生成一個表格怎麼合並單元格,求大神指導!

用PageOffice實現比較簡單,代碼或脊片段
WordDocument doc = new WordDocument();
Table table1 = doc.openDataRegion("Text").openTable(1);/段團棗/打開已存在表格
table1.setPreferredWidthType(WdPreferredWidthType.wdPreferredWidthPoints);
table1.setPreferredWidth(350);//設置表格寬度
table1.openColumn(1).setWidth(150, WdRulerStyle.wdAdjustFirstColumn);//設置第一列寬度
//table1.openRow(2).setHeight(50);//設置第二行行高
table1.setRowsHeight(50);//設置表格里所有行的行高
table1.openCellRC(2, 1).setValue("PageOffice");//單元格填值table1.openCellRC(2, 1).getFont().setSize(15);//下面設置字體
table1.openCellRC(2, 1).getFont().setColor(Color.GREEN);
table1.openCellRC(2, 1).getFont().setBold(true);
table1.openCellRC(2, 1).getFont().setItalic(true);
table1.openCellRC(1, 1).mergeTo(1, 5);//第一行的5個單握拆元格合並為一個單元

Ⅱ java poi合並單元表格(求幫助啊)

/**
*
*@paramcontext
*@paramdictionary
*@paramrows數據行
*@paramfileName文件名
*@paramfields列名
*@paramfieldsName欄位名
*/
privatevoidoutExcelFile(HttpContextcontext,
IContextDictionarydictionary,DataRowCollectionsrows,
StringfileName,List<String>fields,List<String>fieldsName){
intcellSize=fields.size();
if(cellSize==0){
LogManager.debug("沒有指定列頭信息,無法導出Excel文件!");
return;
}
//============創建樣式start
HSSFWorkbookworkbook=newHSSFWorkbook();
HSSFSheetsheet=workbook.createSheet();
信局旦//列頭字體樣式
滑擾HSSFFontheaderFont=workbook.createFont();
headerFont.setFontName("宋體");
headerFont.setFontHeightInPoints((short)12);
headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
//列頭樣式
HSSFCellStyleheaderStyle=workbook.createCellStyle();
headerStyle.setFont(headerFont);
headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中
headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
headerStyle.setLocked(true);
headerStyle.setWrapText(true);
//標題樣式
HSSFFonttitleFont=workbook.createFont();
titleFont.setFontName("宋體");
titleFont.setFontHeightInPoints((short)15);
titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

HSSFCellStyletitleStyle臘逗=workbook.createCellStyle();
titleStyle.setFont(titleFont);
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
titleStyle.setLocked(true);
titleStyle.setWrapText(true);

//普通單元格字體樣式
HSSFFontcellFont=workbook.createFont();
cellFont.setFontName("宋體");
cellFont.setFontHeightInPoints((short)12);
//普通單元格樣式
HSSFCellStylecellStyle=workbook.createCellStyle();
cellStyle.setFont(cellFont);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);//左右居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
cellStyle.setLocked(true);
cellStyle.setWrapText(true);
//============創建樣式end

//設置序號列、列寬和標題行start
HSSFRowtitleRow=sheet.createRow(0);
titleRow.setHeightInPoints(50);
HSSFCelltitleCell=titleRow.createCell(0);
titleCell.setCellValue(newHSSFRichTextString(fileName));
titleCell.setCellStyle(titleStyle);
//sheet.addMergedRegion(newRegion(0,(short)0,0,(short)cellSize));//合並單元格--方法過時
//CellRangeAddress起始行結束行起始列結束列
sheet.addMergedRegion(newCellRangeAddress(0,0,(short)0,(short)cellSize));//合並單元格

//顯示總的數據個數start
HSSFRowcountRow=sheet.createRow(1);
countRow.setHeightInPoints(40);
HSSFCellcountCell=countRow.createCell(0);
countCell.setCellValue(newHSSFRichTextString("共計專項檢查("+rows.size()+")項"));
countCell.setCellStyle(headerStyle);
sheet.addMergedRegion(newCellRangeAddress(1,1,(short)0,(short)cellSize));//合並單元格
//顯示總的數據個數end

HSSFRowheaderRow=sheet.createRow(2);
headerRow.setHeightInPoints(35);
HSSFCellheaderCell=null;

//序號
intstartIndex=0;
headerCell=headerRow.createCell(0);
sheet.setColumnWidth(0,2000);
headerCell.setCellValue(newHSSFRichTextString("序號"));

headerCell.setCellStyle(headerStyle);
startIndex++;

//列頭
for(inti=0;i<cellSize;i++){
sheet.setColumnWidth(startIndex+i,7000);
headerCell=headerRow.createCell(startIndex+i);
headerCell.setCellValue(newHSSFRichTextString(fields.get(i)));
headerCell.setCellStyle(headerStyle);
}
//設置序號列、列寬和標題行end

//文件正文start
introwNum=1;
introwIndex=0;
HSSFRowrow=null;
List<Integer[]>cellRangeLst=newArrayList<Integer[]>(0);
Integer[]arr=null;
intl=0;
StringorgName="";
for(intj=2;j<rows.size()+2;j++){//循環行
DataRowdataRow=rows.get(rowIndex);//對應資料庫欄位
HSSFCellcell=null;
row=sheet.createRow(j+1);
row.setHeightInPoints(55);
//序號
cell=row.createCell(0);
cell.setCellValue(rowNum++);
cell.setCellStyle(cellStyle);

if(StringHelper.isNullOrEmpty(orgName)){
arr=newInteger[2];
arr[0]=j+1;
l=j+1;
orgName=dataRow.getString("ORGNAME");
}else{
if(!orgName.equals(dataRow.getString("ORGNAME"))){
arr[1]=j;
cellRangeLst.add(arr);
sheet.addMergedRegion(newCellRangeAddress(l,j,1,1));
arr=newInteger[2];
l=j+1;
orgName=dataRow.getString("ORGNAME");
}

if(rowIndex==rows.size()-1){
arr[1]=j+1;
cellRangeLst.add(arr);
sheet.addMergedRegion(newCellRangeAddress(l,j+1,1,1));
}
}

for(intk=0;k<cellSize;k++){
cell=row.createCell(k+startIndex);
Stringcolumn=fieldsName.get(k);//對應資料庫欄位
Stringvalue="";
if("APSJ".equals(column)){
value=getAPSJValue(dataRow.getString(column));
}else{
value=dataRow.getString(column);
}
cell.setCellValue(newHSSFRichTextString(value));
cell.setCellStyle(cellStyle);
}
rowIndex++;
}
//文件正文end

//for(Integer[]te:cellRangeLst){
//sheet.addMergedRegion(newCellRangeAddress(te[0],te[1],1,1));//合並處室單元格
//}

//下載
HttpServletResponseresponse=context.getResponse();

response.setContentType("application/x-download;charset=UTF-8");
Stringtitle="export";
try{
title=java.net.URLEncoder.encode(fileName,"UTF-8");
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
response.addHeader("Content-Disposition","attachment;filename="+title+".xls");
try{
OutputStreamout=response.getOutputStream();
workbook.write(out);
out.flush();
out.close();
}catch(IOExceptione){
e.printStackTrace();
}
}

//參考一下吧

Ⅲ JAVA POI 使用addMergedRegionUnsafe合並單元格操作導致導出時間大大增加,怎麼解決

可以邏輯合並,直接把excel文件後綴名改zip,進去後進入目錄xl/sheet目錄下,打開sheet1.xml如下

這是橫向合並,spans="1:2"中的1代表第1行2代表合並ab兩列,具體可以根據代碼邏輯修改,這種直接修改源文件的方式是效率最快的,邏輯也是最復雜的,具體看自己取捨吧

Ⅳ java poi怎麼讀取Excel中合並單元格的值

獲取合並單元格的值 @param sheet @param row @param column @return。

Ⅳ poi Java生成excel合並單元格後字體居中

excel表格中合並的單元格內的字居中到兩行之間的位置:
1、選中合並後的單元格
2、在工具菜單欄選擇
格式
在下拉菜單選擇單元格
3、在單元格格式選項卡下面選擇對齊
4、在文本對齊方式中水平對齊
選擇居中,在垂直對齊下面選擇居中。確定。後單元格內的字就會居中到兩行之間的位置了。

閱讀全文

與javapoi合並單元格相關的資料

熱點內容
蘋果筆記本t2加密晶元怎麼打開 瀏覽:796
安卓如何把手機投屏至電視 瀏覽:737
方舟編譯器現在可提速哪些軟體 瀏覽:58
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:602
蘋果13如何加密視頻 瀏覽:813
linuxweblogic緩存 瀏覽:67
雲伺服器不同地域 瀏覽:946
python鬧鍾怎麼打 瀏覽:686
虛擬主機伺服器有什麼區別 瀏覽:833
演算法與程序的奧秘章節檢測 瀏覽:377
找pdf 瀏覽:529
與伺服器連接斷開如何處理 瀏覽:833
伺服器維修預計十分鍾什麼意思 瀏覽:170
黑馬程序員主打教學是什麼 瀏覽:41
python九乘法表怎麼編寫 瀏覽:974
思維方式pdf 瀏覽:656
tcc社區app怎麼注冊 瀏覽:941
央視網下載加密 瀏覽:454
命令行訪問伺服器 瀏覽:36