如何在Excel中使用HSSFSheet Apache POI创build具有多种样式的单元格?

我正在为excel创build一个导出文档的脚本。 我发现了一些困难,比如:我想通过合并很less的单元格来获得单元格的值,比如“ Name: Mark DOB: 11-11-2014”。 你能帮我解决这个问题吗?

提前致谢 !!

你需要做的是为你的单元格创build一个RichTextString 。 这是将不同格式/样式应用于同一单元格的不同部分以在Excel中显示的方式

您将需要查看关于如何使用它的POI“使用Rich Text”示例 ,但广义上它会是

Cell cell = row.createCell(1); RichTextString rt = new XSSFRichTextString("The quick brown fox"); Font font1 = wb.createFont(); font1.setBoldWeight(Font.BOLDWEIGHT_BOLD); rt.applyFont(0, 10, font1); Font font2 = wb.createFont(); font2.setItalic(true); font2.setUnderline(XSSFFont.U_DOUBLE); rt.applyFont(10, 19, font2); Font font3 = wb.createFont(); font3.setBoldWeight(Font.BOLDWEIGHT_NORMAL); rt.append(" Jumped over the lazy dog", font3); cell.setCellValue(rt); 

这应该给你一个粗体,斜体+下划线和正常混合的单元格

我已经为此创build了一个简短的完整示例。

 import org.apache.poi.hssf.usermodel.*; import org.apache.poi.xssf.usermodel.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.*; import java.io.FileOutputStream; import java.io.FileNotFoundException; import java.io.IOException; class RichTextTest { public static void main(String[] args) { Workbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("Sheet1"); Row row = sheet.createRow(0); Cell cell = row.createCell(0); RichTextString richString = new XSSFRichTextString( "Name: Mark DOB: 11-11-2014" ); //^0 ^4 ^11^14 Font fontBold = wb.createFont(); //fontBold.setBoldweight(Font.BOLDWEIGHT_BOLD); fontBold.setBold(true); richString.applyFont( 0, 4, fontBold ); richString.applyFont( 11, 14, fontBold ); cell.setCellValue(richString); try { FileOutputStream fileOut = new FileOutputStream("workbook.xlsx"); wb.write(fileOut); fileOut.flush(); fileOut.close(); } catch (FileNotFoundException fnfex) { } catch (IOException ioex) { } } } 

进一步阅读请参阅文档。

如何创build工作簿,工作表和单元格: http : //poi.apache.org/spreadsheet/quick-guide.html#CreateCells

如何使用Richtext: https ://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRichTextString.html

字体界面: https : //poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Font.html

你有没有尝试过使用JXLS ?

使用xls模板,您可以读取和写入Excel中的数据。 它使用非常简单。