2012-06-30 14 views
8

में एक विलय वाले क्षेत्र में सीमा जोड़ना मैं अपाचे पोई 3.7 का उपयोग कर रहा हूं और मुझे सीमाओं या विलय क्षेत्र की सीमा तक सीमा डालना होगा।पीओआई एक्सएसएसएफ कार्यपुस्तिका

कैसे मैं किसी मर्ज किए गए क्षेत्र के लिए सीमा लागू करने के लिए कर सकते हैं जब चादर और कार्यपुस्तिका प्रकार XSSF है। एचएसएसएफ प्रकार में मैं RegionUtil-/HSSFRegionutil का उपयोग करता हूं, लेकिन यदि XSSF प्रकार में पहली ऑब्जेक्ट (Regionutil) का उपयोग करता है तो यह काम नहीं करता है और कोशिकाओं की श्रेणी में एक काला पृष्ठभूमि रंग डालता है।

Regionutil ussually CellRangeAddress साथ काम करता है और मैं इस मुसीबत बारे में जानकारी प्राप्त नहीं है। मुझे नहीं पता कि CellRangeAddres इसका कारण बनता है या नहीं।

उत्तर

16

ऐसा करने में, आप मर्ज किए गए क्षेत्र में हर कोशिका के लिए एक खाली सेल को जोड़ने के लिए है, तो प्रत्येक कक्ष के लिए उपयुक्त बॉर्डर जोड़ दिया है। उदाहरण के लिए, निम्नलिखित कोड एक ही पंक्ति में 5 कोशिकाओं का एक विलय क्षेत्र बना देगा, पूरे विलय क्षेत्र के चारों ओर एक सीमा के साथ, और क्षेत्र में केंद्रित पाठ।

XSSFWorkbook wb = new XSSFWorkbook(); 
CellStyle borderStyle = wb.createCellStyle(); 
borderStyle.setBorderBottom(CellStyle.BORDER_THIN); 
borderStyle.setBorderLeft(CellStyle.BORDER_THIN); 
borderStyle.setBorderRight(CellStyle.BORDER_THIN); 
borderStyle.setBorderTop(CellStyle.BORDER_THIN); 
borderStyle.setAlignment(CellStyle.ALIGN_CENTER); 
Sheet sheet = wb.createSheet("Test Sheet"); 
Row row = sheet.createRow(1); 
for (int i = 1; i <= 5; ++i) { 
    Cell cell = row.createCell(i); 
    cell.setCellStyle(borderStyle); 
    if (i == 1) { 
     cell.setCellValue("Centred Text"); 
    } 
} 
sheet.addMergedRegion(new CellRangeAddress(1, 1, 1, 5)); 
+0

यदि यह पंक्ति के अनुसार भी विलय हो तो क्या करें। यानी, जैसे 3 पंक्तियां विलय हो जाती हैं, तो किस तरह से किया जाना चाहिए। कृपया सुझाव दे। – rick

4

एकाधिक पंक्तियों के लिए ऐसा करें।

कार्यपुस्तिका wb = new HSSFWorkbook();

// create a new sheet 
Sheet sheet = wb.createSheet(); 


CellStyle borderStyle = wb.createCellStyle(); 
borderStyle.setBorderBottom(CellStyle.BORDER_THIN); 
borderStyle.setBorderLeft(CellStyle.BORDER_THIN); 
borderStyle.setBorderRight(CellStyle.BORDER_THIN); 
borderStyle.setBorderTop(CellStyle.BORDER_THIN); 
borderStyle.setAlignment(CellStyle.ALIGN_CENTER); 
Sheet sheet1 = wb.createSheet("Test Sheet"); 
Row row = null; 
Cell cell; 
for (int i = 1; i <= 5; ++i) { 
    row = sheet1.createRow(i); 
    for(int j=1;j<=5;j++){ 
     cell= row.createCell(j); 
     cell.setCellStyle(borderStyle); 
     if (i == 1 && j==1) { 
      cell.setCellValue("Centred Text"); 
     } 
    } 
} 
sheet1.addMergedRegion(new CellRangeAddress(1, 5, 1, 5)); 
1
private void setBordersToMergedCells(XSSFWorkbook workBook, XSSFSheet sheet) { 
     int numMerged = sheet.getNumMergedRegions(); 

    for(int i= 0; i<numMerged;i++){ 
     CellRangeAddress mergedRegions = sheet.getMergedRegion(i); 
     RegionUtil.setBorderTop(CellStyle.BORDER_THIN, mergedRegions, sheet, workBook); 
     RegionUtil.setBorderLeft(CellStyle.BORDER_THIN, mergedRegions, sheet, workBook); 
     RegionUtil.setBorderRight(CellStyle.BORDER_THIN, mergedRegions, sheet, workBook); 
     RegionUtil.setBorderBottom(CellStyle.BORDER_THIN, mergedRegions, sheet, workBook); 
    } 


} 
1

@Jesanagua बस मेरी जान बचाई, मैं सिर्फ एक सा 3.17 मिलान करने के लिए बदलना पड़ा।

private void setBordersToMergedCells(HSSFSheet sheet) { 
    int numMerged = sheet.getNumMergedRegions(); 
    for (int i = 0; i < numMerged; i++) { 
     CellRangeAddress mergedRegions = sheet.getMergedRegion(i); 
     RegionUtil.setBorderLeft(BorderStyle.THIN, mergedRegions, sheet); 
     RegionUtil.setBorderRight(BorderStyle.THIN, mergedRegions, sheet); 
     RegionUtil.setBorderTop(BorderStyle.THIN, mergedRegions, sheet); 
     RegionUtil.setBorderBottom(BorderStyle.THIN, mergedRegions, sheet); 

    } 
} 
संबंधित मुद्दे