POI设置EXCEL单元格格式的操作小结
POI操作Excel常用方法总结
POI操作Excel常用方法总结POI操作Excel常用方法总结一、POI简介Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
二、HSSF概况HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。
HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。
三、POI EXCEL文档结构类HSSFWorkbook excel文档对象HSSFSheet excel的sheet HSSFRow excel的行HSSFCell excel的单元格HSSFFont excel字体HSSFName 名称HSSFDataFormat 日期格式HSSFHeader sheet头HSSFFooter sheet尾HSSFCellStyle cell样式HSSFDateUtil 日期HSSFPrintSetup 打印HSSFErrorConstants 错误信息表四、EXCEL常用操作方法1、得到Excel常用对象view plaincopy to clipboardprint?1.POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));2.//得到Excel工作簿对象3.HSSFWorkbook wb = new HSSFWorkbook(fs);4.//得到Excel工作表对象5.HSSFSheet sheet = wb.getSheetAt(0);6.//得到Excel工作表的行7.HSSFRow row = sheet.getRow(i);8.//得到Excel工作表指定行的单元格9.HSSFCell cell = row.getCell((short) j);10.cellStyle = cell.getCellStyle();//得到单元格样式1.HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象2.HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象3.HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行4.cellStyle = wb.createCellStyle();//创建单元格样式5.row.createCell((short)0).setCellStyle(cellStyle); //创建Excel 工作表指定行的单元格6.row.createCell((short)0).setCellValue(1); //设置Excel工作表的值3、设置sheet名称和单元格内容view plaincopy to clipboardprint?1.wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);2.cell.setEncoding((short) 1);3.cell.setCellValue("单元格内容");1.wb.getNumberOfSheets()1.HSSFSheet sheet = wb.getSheetAt(0);1.int rowcount = sheet.getLastRowNum();view plaincopy to clipboardprint?1.row.getLastCellNum();1.cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型2.cell.getNumericCellValue();//读取为数值类型的单元格内容1.sheet.setColumnWidth((short)column,(short)width);2.row.setHeight((short)height);1.Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowT o2.,(short)columnT o);//合并从第rowFrom行columnFrom列3.sheet.addMergedRegion(region);// 到rowTo行columnT o 的区域4.//得到所有区域5.sheet.getNumMergedRegions()1.FileOutputStream fileOut = new FileOutputStream(path);2.wb.write(fileOut);1.public String getCellStringValue(HSSFCell cell) {2. String cellValue = "";3. switch (cell.getCellType()) {4. case HSSFCell.CELL_TYPE_STRING://字符串类型5. cellValue = cell.getStringCellValue();6. if(cellValue.trim().equals("")||cellValue.trim().length()<=0)7. cellValue=" ";8. break;9. case HSSFCell.CELL_TYPE_NUMERIC: //数值类型10. cellValue = String.valueOf(cell.getNumericCellValue());11. break;12. case HSSFCell.CELL_TYPE_FORMULA: //公式13. cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);14. cellValue = String.valueOf(cell.getNumericCellValue());15. break;16. case HSSFCell.CELL_TYPE_BLANK:17. cellValue=" ";18. break;19. case HSSFCell.CELL_TYPE_BOOLEAN:20. break;21. case HSSFCell.CELL_TYPE_ERROR:22. break;23. default:24. break;25. }26. return cellValue;27. }13、常用单元格边框格式view plaincopy to clipboardprint?1.HSSFCellStyle style = wb.createCellStyle();2.style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框3.style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框4.style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框5.style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框1.HSSFFont f = wb.createFont();2. f.setFontHeightInPoints((short) 11);//字号3. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗4.style.setFont(f);5.style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中6.style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTE R);//上下居中7.style.setRotation(short rotation);//单元格内容的旋转的角度8.HSSFDataFormat df = wb.createDataFormat();9.style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式10.cell.setCellFormula(string);//给单元格设公式11.style.setRotation(short rotation);//单元格内容的旋转的角度1.//先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray2. ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();3. BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));4. ImageIO.write(bufferImg,"jpg",byteArrayOut);5.//读进一个excel模版6.FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");7.fs = new POIFSFileSystem(fos);8.//创建一个工作薄9.HSSFWorkbook wb = new HSSFWorkbook(fs);10.HSSFSheet sheet = wb.getSheetAt(0);11.HSSFPatriarch patriarch = sheet.createDrawingPatriarch();12.HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);13.patriarch.createPicture(anchor ,wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));1.HSSFWorkbook wb = new HSSFWorkbook();2.HSSFSheet sheet = wb.createSheet("format sheet");3.HSSFPrintSetup ps = sheet.getPrintSetup();4.sheet.setAutobreaks(true);5.ps.setFitHeight((short)1);6.ps.setFitWidth((short)1);1.HSSFSheet sheet = wb.createSheet("Sheet1");2.wb.setPrintArea(0, "$A$1:$C$2");1.HSSFSheet sheet = wb.createSheet("format sheet");2.HSSFFooter footer = sheet.getFooter()3.footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );1.HSSFWorkbook wb = new HSSFWorkbook();2.HSSFSheet sheet = wb.createSheet("row sheet");3.// Create various cells and rows for spreadsheet.4.// Shift rows 6 - 11 on the spreadsheet to the top (rows 0 -5)5.sheet.shiftRows(5, 10, -5);20、选中指定的工作表view plaincopy to clipboardprint?1.HSSFSheet sheet = wb.createSheet("row sheet");2.heet.setSelected(true);1.HSSFSheet sheet1 = wb.createSheet("new sheet");2.sheet1.setZoom(1,2); // 50 percent magnification1.HSSFSheet sheet = wb.createSheet("new sheet");2.HSSFHeader header = sheet.getHeader();3.header.setCenter("Center Header");4.header.setLeft("Left Header");5.header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +6.HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16");1.HSSFCellStyle style = wb.createCellStyle();2.style.setFillForegroundColor(HSSFColor.LIME.index);3.style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);4.HSSFFont font = wb.createFont();5.font.setColor(HSSFColor.RED.index);6.style.setFont(font);7.cell.setCellStyle(style);1.HSSFCellStyle style = wb.createCellStyle();2.style.setFillBackgroundColor(HSSFColor.AQUA.index);3.style.setFillPattern(HSSFCellStyle.BIG_SPOTS);4.HSSFCell cell = row.createCell((short) 1);5.cell.setCellValue("X");6.style = wb.createCellStyle();7.style.setFillForegroundColor(HSSFColor.ORANGE.index);8.style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);9.cell.setCellStyle(style);1.HSSFFormulaEvaluator eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);2.private static void updateFormula(Workbook wb,Sheet s,int row){3. Row r=s.getRow(row);4. Cell c=null;5. FormulaEcaluator eval=null;6. if(wb instanceof HSSFWorkbook)7. eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);8. else if(wb instanceof XSSFWorkbook)9. eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb);10. for(int i=r.getFirstCellNum();i<r.getlastcellnum();i++){< p="">11. c=r.getCell(i);12. if(c.getCellType()==Cell.CELL_TYPE_FORMULA)13. eval.evaluateFormulaCell(c);14. }15. }laCells(HSSFWorkbook wb) ,计算一个Excel文件的所有公式,用起来很方便。
poi单元格样式
poi单元格样式
POI(Apache POI)是一个用于读取和写入Microsoft Office格式文件的Java库,包括Excel、Word等。
在POI中,单元格样式(CellStyle)是用于设置单元格显示样式的对象,它决定了单元格的边框样式、填充图案、前景色、背景色、内容对齐方式、字体等属性。
以下是一些常见的设置单元格样式的方法:
1. 创建单元格样式:
```java
CellStyle style = ();
```
2. 设置边框样式:
```java
(); // 设置下边框样式
(); // 设置上边框样式
(); // 设置左边框样式
(); // 设置右边框样式
```
3. 设置填充图案和前景色、背景色:
```java
(_FOREGROUND); // 设置填充模式为前景色填充(()); // 设置前景色为黄色
(()); // 设置背景色为蓝色
```
4. 设置对齐方式:
```java
(); // 设置水平居中对齐
(); // 设置垂直居中对齐
```
5. 设置字体:
```java
Font font = ();
("Arial"); // 设置字体为Arial ((short) 12); // 设置字体大小为12磅(font); // 将字体应用到单元格样式中```
6. 应用单元格样式:
```java
(style); // 将样式应用到单元格上
```。
java的POI操作Excel文件
java的POI操作Excel文件(2)现在我要做的东西基本完成啦,我把这段时间使用POI的一些心得总结出来,希望能对和我遇到相同问题的朋友有所帮助,至于POI基本的使用方法,自己去看文档吧。
1、设置分页符的bugPOI里的HSSFSheet类提供了setRowBreak方法可以设置Sheet的分页符。
Bug:如果你要设置分页符的Sheet是本来就有的,并且你没有在里面插入过分页符,那么调用setRowBreak时POI会抛出空指针的异常。
解决方法:在Excel里给这个sheet插入一个分页符,用POI打开后再把它删掉,然后你就可以随意插入分页符了。
如果sheet是由POI生成的则没有这个问题。
我跟踪了setRowBreak的源代码,发现是Sheet.Java下的PageBreakRecord rowBreaks这个变量在搞鬼,如果Sheet里原来没有分页符,开发这个模块的那位兄台忘了为这个对象new实例,所以只能我们先手工给Excel插入一个分页符来触发POI为rowBreaks创建实例。
2、如何拷贝行我在的POI用户论坛翻遍了每个相关的帖子,找遍了api,也没看到一个拷贝行的方法,没办法,只能自己写://注:this.fWorkbook是一个HSSHWorkbook,请自行在外部newpublic void copyRows(String pSourceSheetName,String pTargetSheetName,int pStartRow, int pEndRow,int pPosition){HSSFRow sourceRow = null;HSSFRow targetRow = null;HSSFCell sourceCell = null;HSSFCell targetCell = null;HSSFSheet sourceSheet = null;HSSFSheet targetSheet = null;Region region = null;int cType;int i;short j;int targetRowFrom;int targetRowTo;if ((pStartRow == -1) || (pEndRow == -1)){return;}sourceSheet = this.fWorkbook.getSheet(pSourceSheetName);targetSheet = this.fWorkbook.getSheet(pTargetSheetName);//拷贝合并的单元格for (i = 0; i < sourceSheet.getNumMergedRegions(); i++){region = sourceSheet.getMergedRegionAt(i);if ((region.getRowFrom() >= pStartRow) && (region.getRowTo() <= pEndRow)) {targetRowFrom = region.getRowFrom() - pStartRow + pPosition; targetRowTo = region.getRowTo() - pStartRow + pPosition;region.setRowFrom(targetRowFrom);region.setRowTo(targetRowTo);targetSheet.addMergedRegion(region);}}//设置列宽for (i = pStartRow; i <= pEndRow; i++){sourceRow = sourceSheet.getRow(i);if (sourceRow != null){for (j = sourceRow.getFirstCellNum(); j < sourceRow.getLastCellNum(); j++) {targetSheet.setColumnWidth(j, sourceSheet.getColumnWidth(j));}break;}}//拷贝行并填充数据for (;i <= pEndRow; i++){sourceRow = sourceSheet.getRow(i);if (sourceRow == null){continue;}targetRow = targetSheet.createRow(i - pStartRow + pPosition);targetRow.setHeight(sourceRow.getHeight());for (j = sourceRow.getFirstCellNum(); j < sourceRow.getLastCellNum(); j++)sourceCell = sourceRow.getCell(j);if (sourceCell == null){continue;}targetCell = targetRow.createCell(j);targetCell.setEncoding(sourceCell.getEncoding());targetCell.setCellStyle(sourceCell.getCellStyle());cType = sourceCell.getCellType();targetCell.setCellType(cType);switch (cType){case HSSFCell.CELL_TYPE_BOOLEAN:targetCell.setCellValue(sourceCell.getBooleanCellValue());break;case HSSFCell.CELL_TYPE_ERROR:targetCell.setCellErrorV alue(sourceCell.getErrorCellValue());break;case HSSFCell.CELL_TYPE_FORMULA://parseFormula这个函数的用途在后面说明targetCell.setCellFormula(parseFormula(sourceCell.getCellFormula()));break;case HSSFCell.CELL_TYPE_NUMERIC:targetCell.setCellValue(sourceCell.getNumericCellV alue());break;case HSSFCell.CELL_TYPE_STRING:targetCell.setCellValue(sourceCell.getStringCellValue());break;}}}}这个函数有两个问题暂时无法解决:a、只能在同一个Workbook里面使用,跨Workbook总是拷不过去,不知道为什么?b、由于在拷贝行时也把行高也拷过去了,如果往这些单元格里写入的数据长度超过单元格长度,那么他们不会自动调整行高!3、公式的问题POI对Excel公式的支持是相当好的,但是我发现一个问题,如果公式里面的函数不带参数,比如now()或today(),那么你通过getCellFormula()取出来的值就是now(ATTR(semiV olatile))和today(ATTR(semiV olatile)),这样的值写入Excel是会出错的,这也是我上面copyRow的函数在写入公式前要调用parseFormula的原因,parseFormula这个函数的功能很简单,就是把ATTR(semiVolatile)删掉,我把它的代码贴出来:private String parseFormula(String pPOIFormula){final String cstReplaceString = "ATTR(semiV olatile)"; //$NON-NLS-1$StringBuffer result = null;int index;result = new StringBuffer();index = pPOIFormula.indexOf(cstReplaceString);if (index >= 0){result.append(pPOIFormula.substring(0, index));result.append(pPOIFormula.substring(index + cstReplaceString.length()));}else{result.append(pPOIFormula);}return result.toString();}至于为什么会出现ATTR(semiVolatile),还需要大家的探索精神!4、向Excel写入图片的问题。
POI精确设置Excel的行高和列宽
POI精确设置Excel的⾏⾼和列宽EXCEL的⾏⾼度和列宽度单位是不⼀样的。
1,EXCEL列⾼度的单位是磅,Apache POI的⾏⾼度单位是缇(twip):1英⼨=72磅=25.4毫⽶=1440缇1磅=0.353毫⽶=20缇POI中的⾏⾼=Excel的⾏⾼度*20Excel的⾏⾼度=POI中的⾏⾼/20这⾥顺便把像素的换⾏⽅法说⼀下:DPI = 1英⼨内可显⽰的像素点个数。
通常电脑屏幕是96DPI, IPhone4s的屏幕是326DPI, 普通激光⿊⽩打印机是400DPI要计算POI⾏⾼或者Excel的⾏⾼,就先把它⾏转换到英⼨,再乘⼩DPI就可以得到像素像素= (磅/72)*DPI像素= (Excel的⾏⾼度/72)*DPI像素= (POI中的⾏⾼/20/72)*DPIExcel的⾏⾼度=像素/DPI*72POI中的⾏⾼=像素/DPI*72*20例如在电脑屏幕上, Excel默认⾏⾼度为13.5, (13.5/72)*96=18像素,⽽Excel中也确实显⽰的就是18像素。
2,EXCEL列宽度的单位是字符个数(2014-08-18备注:关于Excel的宽度计算的详细介绍在这篇⽂章)在excel2003以上的版本中,可以建⽴⼀个空⽩的xls⽂档并将第⼀列宽度拉到10。
然后在A1单元格中输⼊1234567890可以看到单元格正好可以容纳这⼗个字符。
⼀个字符的宽度是通过测量1234567890这⼗个字符在默认字体(通常是宋体11号字,视版本可能不同)下的平均宽度得到的。
只要记住⼀个字符的宽度是8像素 (2013-10-29备注:⼀个字符的宽度取决于Excel⽂件中的第⼀个字体⼤⼩,并不⼀定就是8像素)就可以了。
⼀个单元格实际的像素宽度还要在(字符个数 * 默认字符的宽度)的基础上前后各加2个像素的空⽩边。
另外字符之间会叠加⼀个像素,在计算时也要减去:(2013-10-29备注:⼀个字符的边距不⼀定只是2像素,和字体有关系)像素 = 2个像素空⽩ + (字符个数 * 默认字符的宽度) + 2个像素空⽩ - (字符个数 - 1)整理⼀下,公式变成:像素 = 5 + (字符个数 * (默认字符的宽度 - 1))代⼊默认字符宽度8:像素 = 5 + (字符个数 * 7)POI中的字符宽度算法是:double 宽度 = (字符个数 * (字符宽度 - 1) + 5) / (字符宽度 - 1) * 256;然后再四舍五⼊成整数。
poi 多个单元格样式
poi 多个单元格样式
要在Excel中为多个单元格设置样式,可以使用以下方法:
1. 使用格式刷,选择一个单元格,点击“格式刷”按钮,然后用鼠标拖动以选择要应用样式的单元格范围。
2. 使用条件格式设置,可以根据单元格的数值或文本条件来设置样式,例如,可以根据数值大小设置背景色或文本颜色。
3. 使用数据表格,在Excel中可以将数据转换为数据表格,然后可以选择不同的表格样式来美化整个数据表。
4. 使用层叠样式表,如果你熟悉CSS,可以使用层叠样式表来为单元格设置更复杂的样式,包括字体、边框、背景等。
5. 使用宏,如果需要对大量单元格进行样式设置,可以使用VBA宏来自动化这个过程。
总之,Excel提供了多种方式来为多个单元格设置样式,可以根据具体需求选择合适的方法来完成样式设置。
poi 单元格格式 -回复
poi 单元格格式-回复POI(Poor Obfuscation Implementation)是一个Java库,用于处理Microsoft Office格式文件(如Excel、Word和PowerPoint)。
在POI 中,单元格格式扮演着至关重要的角色,它可以帮助我们在Excel工作簿中设置单元格的样式、对齐方式、字体、边框等。
在本文中,我们将一步一步地探讨POI中的单元格格式。
第一步:了解POI库和Excel文件结构POI是一个开源的Java库,可以用来读取、创建和修改Microsoft Office 格式的文件。
在我们开始处理单元格格式之前,我们需要对POI库和Excel 文件的结构有一定的了解。
POI库提供了一系列的类和方法,可以让我们以编程方式处理Excel文件。
第二步:导入POI库要在我们的项目中使用POI库,我们需要导入相应的依赖项。
我们可以通过在项目的pom.xml文件中添加POI的依赖项来完成这一步骤。
一旦我们导入了POI库,我们就可以使用它的功能来处理Excel文件。
第三步:创建工作簿和工作表在我们开始处理单元格格式之前,我们需要创建一个工作簿和至少一个工作表。
可以使用POI的HSSFWorkbook类来创建工作簿,使用Sheet 类来创建工作表。
我们可以设置工作簿和工作表的一些属性,如标题、作者、创建日期等。
第四步:创建单元格一旦我们创建了工作簿和工作表,接下来的步骤是创建单元格。
在POI 中,我们使用Row和Cell类来创建和管理单元格。
可以使用createCell()方法在指定的行和列位置创建一个新的单元格。
我们还可以给单元格设置一些属性,如值、样式等。
第五步:设置单元格格式现在是时候设置单元格的格式了。
在POI中,我们使用CellStyle类来设置单元格的格式。
可以使用createCellStyle()方法创建一个新的单元格样式对象,并使用该对象对单元格进行格式设置。
poi 默认单元格样式
poi 默认单元格样式POI(Poor Obfuscation Implementation)是一个Apache软件基金会的开放源码项目,用于处理Microsoft Office格式文件(如:Word、Excel等)。
在POI中,单元格样式被称为CellStyle。
当创建新的Excel文件时,默认情况下,所有单元格都采用默认单元格样式。
默认单元格样式定义了单元格的字体、颜色、对齐方式、边框、背景颜色等属性。
在创建新的Excel文件时,如果没有指定特定的单元格样式,那么所有单元格都会自动应用默认样式。
默认样式的属性可以通过Workbook的createCellStyle()方法进行修改和定制。
下面我们来详细了解一下默认单元格样式的属性。
1.字体属性:默认情况下,单元格使用Excel的默认字体。
可以通过CellStyle 的setFont()方法设置新的字体,包括字体名称、字号、是否粗体、是否斜体等。
如果不设置字体属性,单元格将使用默认字体。
2.对齐方式:默认情况下,单元格的对齐方式为左对齐和垂直居中。
可以通过CellStyle的setAlignment()和setVerticalAlignment()方法设置新的对齐方式。
对齐方式包括左对齐、右对齐、居中对齐等。
如果不设置对齐方式,单元格将使用默认对齐方式。
3.边框:默认情况下,单元格的边框为无边框。
可以通过CellStyle的setBorderXXX()方法设置新的边框样式,包括上边框、下边框、左边框、右边框等。
边框样式包括实线边框、虚线边框、粗边框等。
如果不设置边框样式,单元格将使用默认边框。
4.背景颜色:默认情况下,单元格的背景颜色为白色。
可以通过CellStyle的setFillForegroundColor()和setFillPattern()方法设置新的背景颜色。
背景颜色可以是预定义的颜色常量,也可以是自定义的RGB颜色。
如果不设置背景颜色,单元格将使用默认背景颜色。
poi 操作单元格
poi 操作单元格POI 是Apache 软件基金会的开放源代码库,它提供了一组用于操作Microsoft Excel、Word 和PowerPoint 文件的API。
在使用POI 操作单元格时,可以使用以下步骤:1. 创建工作簿:使用`Workbook`类创建一个新的工作簿。
2. 获取工作表:使用`Workbook.getSheet()`方法获取要操作的工作表。
3. 获取单元格:使用`Sheet.getRow()`和`Row.getCell()`方法获取要操作的单元格。
4. 设置单元格的值:使用`Cell.setCellValue()`方法设置单元格的值。
5. 设置单元格格式:使用`Cell.setCellStyle()`方法设置单元格的格式。
6. 保存工作簿:使用`Workbook.save()`方法保存工作簿。
以下是一个简单的示例代码,演示如何使用POI 操作单元格:```javaimport ermodel.HSSFWorkbook;import ermodel.HSSFSheet;import ermodel.HSSFCell;// 创建工作簿HSSFWorkbook workbook = new HSSFWorkbook();// 获取工作表HSSFSheet sheet = workbook.createSheet("Sheet1");// 获取单元格HSSFCell cell = sheet.getRow(0).getCell(0);// 设置单元格的值cell.setCellValue("你好,世界!");// 设置单元格格式cell.setCellStyle(workbook.createCellStyle());// 保存工作簿workbook.save("example.xlsx");```在上述示例中,我们首先创建了一个新的工作簿,然后获取了工作表"Sheet1"。
poi -tl 单元格样式
poi -tl 单元格样式
单元格样式(Cell Style)在POI(Apache POI)中是指对Excel表格中单元格的格式、外观和布局进行设置的功能。
在POI 中,可以通过创建CellStyle对象来定义单元格的样式,然后将这些样式应用到相应的单元格上。
单元格样式包括字体样式、边框样式、背景颜色、文本对齐方式等。
通过POI,可以灵活地控制单元格的外观,使得生成的Excel 表格符合用户的需求。
在POI中,可以通过以下步骤来设置单元格样式:
1. 创建一个新的工作簿对象(Workbook)。
2. 创建一个新的工作表对象(Sheet)。
3. 创建一个新的单元格对象(Cell)。
4. 创建一个新的单元格样式对象(CellStyle)。
5. 设置单元格样式的各种属性,比如字体样式、边框样式、背
景颜色、文本对齐方式等。
6. 将单元格样式应用到相应的单元格上。
通过以上步骤,可以实现对Excel表格中单元格样式的灵活控制。
在设置单元格样式时,需要注意以下几点:
1. 字体样式,可以设置字体的名称、大小、颜色、加粗、斜体
等属性。
2. 边框样式,可以设置单元格的边框粗细、颜色、样式(实线、虚线等)。
3. 背景颜色,可以设置单元格的背景颜色。
4. 文本对齐方式,可以设置文本在单元格中的水平对齐方式
(左对齐、居中、右对齐)和垂直对齐方式(顶部对齐、居中、底
部对齐)。
总之,通过POI库提供的单元格样式功能,可以实现对Excel 表格中单元格外观的灵活定制,满足用户对Excel表格外观的个性化需求。
POI操作Excel常用方法总结
POI操作Excel常用方法总结一、POI简介Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
二、HSSF概况HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。
HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。
三、POI EXCEL文档结构类HSSFWorkbook excel文档对象HSSFSheet excel的sheet HSSFRow excel的行HSSFCell excel的单元格HSSFFont excel字体HSSFName 名称HSSFDataFormat 日期格式HSSFHeader sheet头HSSFFooter sheet尾HSSFCellStyle cell样式HSSFDateUtil 日期HSSFPrintSetup 打印HSSFErrorConstants 错误信息表四、EXCEL常用操作方法1、得到Excel常用对象view plaincopy to clipboardprint?1.POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));2.//得到Excel工作簿对象3.HSSFWorkbook wb = new HSSFWorkbook(fs);4.//得到Excel工作表对象5.HSSFSheet sheet = wb.getSheetAt(0);6.//得到Excel工作表的行7.HSSFRow row = sheet.getRow(i);8.//得到Excel工作表指定行的单元格9.HSSFCell cell = row.getCell((short) j);10.cellStyle = cell.getCellStyle();//得到单元格样式1.HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象2.HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象3.HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行4.cellStyle = wb.createCellStyle();//创建单元格样式5.row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格6.row.createCell((short)0).setCellValue(1); //设置Excel工作表的值3、设置sheet名称和单元格内容view plaincopy to clipboardprint?1.wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);2.cell.setEncoding((short) 1);3.cell.setCellValue("单元格内容");1.wb.getNumberOfSheets()1.HSSFSheet sheet = wb.getSheetAt(0);1.int rowcount = sheet.getLastRowNum();view plaincopy to clipboardprint?1.row.getLastCellNum();1.cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型2.cell.getNumericCellValue();//读取为数值类型的单元格内容1.sheet.setColumnWidth((short)column,(short)width);2.row.setHeight((short)height);1.Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo2.,(short)columnTo);//合并从第rowFrom行columnFrom列3.sheet.addMergedRegion(region);// 到rowTo行columnTo的区域4.//得到所有区域5.sheet.getNumMergedRegions()1.FileOutputStream fileOut = new FileOutputStream(path);2.wb.write(fileOut);1.public String getCellStringValue(HSSFCell cell) {2. String cellValue = "";3. switch (cell.getCellType()) {4. case HSSFCell.CELL_TYPE_STRING://字符串类型5. cellValue = cell.getStringCellValue();6. if(cellValue.trim().equals("")||cellValue.trim().length()<=0)7. cellValue=" ";8. break;9. case HSSFCell.CELL_TYPE_NUMERIC: //数值类型10. cellValue = String.valueOf(cell.getNumericCellValue());11. break;12. case HSSFCell.CELL_TYPE_FORMULA: //公式13. cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);14. cellValue = String.valueOf(cell.getNumericCellValue());15. break;16. case HSSFCell.CELL_TYPE_BLANK:17. cellValue=" ";18. break;19. case HSSFCell.CELL_TYPE_BOOLEAN:20. break;21. case HSSFCell.CELL_TYPE_ERROR:22. break;23. default:24. break;25. }26. return cellValue;27. }13、常用单元格边框格式view plaincopy to clipboardprint?1.HSSFCellStyle style = wb.createCellStyle();2.style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框3.style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框4.style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框5.style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框1.HSSFFont f = wb.createFont();2. f.setFontHeightInPoints((short) 11);//字号3. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗4.style.setFont(f);5.style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中6.style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中7.style.setRotation(short rotation);//单元格内容的旋转的角度8.HSSFDataFormat df = wb.createDataFormat();9.style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式10.cell.setCellFormula(string);//给单元格设公式11.style.setRotation(short rotation);//单元格内容的旋转的角度1.//先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray2. ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();3. BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));4. ImageIO.write(bufferImg,"jpg",byteArrayOut);5.//读进一个excel模版6.FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");7.fs = new POIFSFileSystem(fos);8.//创建一个工作薄9.HSSFWorkbook wb = new HSSFWorkbook(fs);10.HSSFSheet sheet = wb.getSheetAt(0);11.HSSFPatriarch patriarch = sheet.createDrawingPatriarch();12.HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);13.patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));1.HSSFWorkbook wb = new HSSFWorkbook();2.HSSFSheet sheet = wb.createSheet("format sheet");3.HSSFPrintSetup ps = sheet.getPrintSetup();4.sheet.setAutobreaks(true);5.ps.setFitHeight((short)1);6.ps.setFitWidth((short)1);1.HSSFSheet sheet = wb.createSheet("Sheet1");2.wb.setPrintArea(0, "$A$1:$C$2");1.HSSFSheet sheet = wb.createSheet("format sheet");2.HSSFFooter footer = sheet.getFooter()3.footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );1.HSSFWorkbook wb = new HSSFWorkbook();2.HSSFSheet sheet = wb.createSheet("row sheet");3.// Create various cells and rows for spreadsheet.4.// Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5)5.sheet.shiftRows(5, 10, -5);20、选中指定的工作表view plaincopy to clipboardprint?1.HSSFSheet sheet = wb.createSheet("row sheet");2.heet.setSelected(true);1.HSSFSheet sheet1 = wb.createSheet("new sheet");2.sheet1.setZoom(1,2); // 50 percent magnification1.HSSFSheet sheet = wb.createSheet("new sheet");2.HSSFHeader header = sheet.getHeader();3.header.setCenter("Center Header");4.header.setLeft("Left Header");5.header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +6.HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16");1.HSSFCellStyle style = wb.createCellStyle();2.style.setFillForegroundColor(HSSFColor.LIME.index);3.style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);4.HSSFFont font = wb.createFont();5.font.setColor(HSSFColor.RED.index);6.style.setFont(font);7.cell.setCellStyle(style);1.HSSFCellStyle style = wb.createCellStyle();2.style.setFillBackgroundColor(HSSFColor.AQUA.index);3.style.setFillPattern(HSSFCellStyle.BIG_SPOTS);4.HSSFCell cell = row.createCell((short) 1);5.cell.setCellValue("X");6.style = wb.createCellStyle();7.style.setFillForegroundColor(HSSFColor.ORANGE.index);8.style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);9.cell.setCellStyle(style);1.HSSFFormulaEvaluator eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);2.private static void updateFormula(Workbook wb,Sheet s,int row){3. Row r=s.getRow(row);4. Cell c=null;5. FormulaEcaluator eval=null;6. if(wb instanceof HSSFWorkbook)7. eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);8. else if(wb instanceof XSSFWorkbook)9. eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb);10. for(int i=r.getFirstCellNum();i<r.getLastCellNum();i++){11. c=r.getCell(i);12. if(c.getCellType()==Cell.CELL_TYPE_FORMULA)13. eval.evaluateFormulaCell(c);14. }15. }laCells(HSSFWorkbook wb) ,计算一个Excel文件的所有公式,用起来很方便。
POI对Excel表格操作研
1
只需要用工作表调用合并单元格的方法: 只 需 sheet 表 调 用 合 并 单 元 格 的 方 法
sheet.addMergedRegion(new
合 并
CellRangeAddress(
单
1, //开始行号
元 格Βιβλιοθήκη 1, //终止行号1, //开始列号
WritableSheet.mergeCells( int m, //开始列号 int n, //开始行号 int p, //终止列号 int q//终止行号
wb.addPicture(bytes,
Workbook.PICTURE_TYPE_JPEG); File file=new
CreationHelper helper = File("D:\\1.png");//仅支持png格
wb.getCreationHelper();
式图片
插
Drawing drawing = sheet.
XSSFWorkbook(f);
Sheet
读 操
XSSFSheet sheet =
sheet=book.getSheet(0);
作
workbook.getSheet("Sheet");// Cell cell1=sheet.getCell(0,0);
XSSFRow row =
String result=cell1.getContents();
import jxl.*;
写
XSSFRow row
WritableWorkbook book=
操 作
=sheet.createRow(65536);
Workbook.createWorkbook(new
使用POI来处理Excel和Word文件格式
// 文件二进制输入流private InputStream is = null;// 当前的Sheetprivate int currSheet;// 当前位置private int currPosition;// Sheet数量private int numOfSheets;// HSSFWorkbookHSSFWorkbook workbook = null;// 设置Cell之间以空格分割private static String EXCEL_LINE_DELIMITER = " ";// 设置最大列数private static int MAX_EXCEL_COLUMNS = 64;// 构造函数创建一个ExcelReaderpublic ExcelReader(String inputfile) throws IOException, Exception { // 判断参数是否为空或没有意义if (inputfile == null || inputfile.trim().equals("")) {throw new IOException("no input file specified");}// 取得文件名的后缀名赋值给filetypethis.filetype = inputfile.substring(stIndexOf(".") + 1);// 设置开始行为0currPosition = 0;// 设置当前位置为0currSheet = 0;// 创建文件输入流is = new FileInputStream(inputfile);// 判断文件格式if (filetype.equalsIgnoreCase("txt")) {// 如果是txt则直接创建BufferedReader读取reader = new BufferedReader(new InputStreamReader(is));}else if (filetype.equalsIgnoreCase("xls")) {// 如果是Excel文件则创建HSSFWorkbook读取workbook = new HSSFWorkbook(is);// 设置Sheet数numOfSheets = workbook.getNumberOfSheets();}else {throw new Exception("File Type Not Supported");}}// 函数readLine读取文件的一行public String readLine() throws IOException {// 如果是txt文件则通过reader读取if (filetype.equalsIgnoreCase("txt")) {String str = reader.readLine();// 空行则略去,直接读取下一行while (str.trim().equals("")) {str = reader.readLine();}return str;}// 如果是XLS文件则通过POI提供的API读取文件else if (filetype.equalsIgnoreCase("xls")) {// 根据currSheet值获得当前的sheetHSSFSheet sheet = workbook.getSheetAt(currSheet);// 判断当前行是否到但前Sheet的结尾if (currPosition > sheet.getLastRowNum()) {// 当前行位置清零currPosition = 0;// 判断是否还有Sheetwhile (currSheet != numOfSheets - 1) {// 得到下一张Sheetsheet = workbook.getSheetAt(currSheet + 1);// 当前行数是否已经到达文件末尾if (currPosition == sheet.getLastRowNum()) {// 当前Sheet指向下一张SheetcurrSheet++;continue;} else {// 获取当前行数int row = currPosition;currPosition++;// 读取当前行数据return getLine(sheet, row);}}return null;}// 获取当前行数int row = currPosition;currPosition++;// 读取当前行数据return getLine(sheet, row);}return null;}// 函数getLine返回Sheet的一行数据private String getLine(HSSFSheet sheet, int row) {// 根据行数取得Sheet的一行HSSFRow rowline = sheet.getRow(row);// 创建字符创缓冲区StringBuffer buffer = new StringBuffer();// 获取当前行的列数int filledColumns = rowline.getLastCellNum(); HSSFCell cell = null;// 循环遍历所有列for (int i = 0; i < filledColumns; i++) {// 取得当前Cellcell = rowline.getCell((short) i);String cellvalue = null;if (cell != null) {// 判断当前Cell的Typeswitch (cell.getCellType()) {// 如果当前Cell的Type为NUMERICcase HSSFCell.CELL_TYPE_NUMERIC: {// 判断当前的cell是否为Dateif (HSSFDateUtil.isCellDateFormatted(cell)) {// 如果是Date类型则,取得该Cell的Date值Date date = cell.getDateCellValue();// 把Date转换成本地格式的字符串cellvalue = cell.getDateCellValue().toLocaleString();}// 如果是纯数字else {// 取得当前Cell的数值Integer num = new Integer((int) cell.getNumericCellValue());cellvalue = String.valueOf(num);}break;}// 如果当前Cell的Type为STRINcase HSSFCell.CELL_TYPE_STRING:// 取得当前的Cell字符串cellvalue = cell.getStringCellValue().replaceAll("'", "''");break;// 默认的Cell值default:cellvalue = " ";}} else {cellvalue = "";}// 在每个字段之间插入分割符buffer.append(cellvalue).append(EXCEL_LINE_DELIMITER);}// 以字符串返回该行的数据return buffer.toString();}// close函数执行流的关闭操作public void close() {// 如果is不为空,则关闭InputSteam文件输入流if (is != null) {try {is.close();} catch (IOException e) {is = null;}}// 如果reader不为空则关闭BufferedReader文件输入流if (reader != null) {try {reader.close();} catch (IOException e) {reader = null;}}}}7.3.2 ExcelReader的运行效果下面创建一个main函数,用来测试上面的ExcelReader类,代码如下。
poi 单元格类型
poi 单元格类型
在使用POI框架导出Excel时,设置单元格类型为数值类型可以方便在将来导出的表格中进行计算。
要实现这一目的,关键步骤是设置单元格的格式和向单元格中存放数据。
以下是POI框架中设置单元格类型为数值类型的核心代码片段:
1. 创建一个Excel文件:
```java
HSSFWorkbook workbook = new HSSFWorkbook();
```
2. 定义单元格样式:
```java
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormatter(new HSSFDataFormatter(String.class));
```
3. 设置单元格类型为数值:
```java
cell.setCellStyle(cellStyle);
```
4. 向单元格中存放数据:
```java
Object data = row.get(headerName);
if (data instanceof Number) {
cell.setCellValue(((Number) data).doubleValue());
} else if (data instanceof String) {
cell.setCellValue((String) data);
}
```
通过以上代码,可以确保导出的Excel表格中,需要设置为数值类型的单元格以数值类型导出。
需要注意的是,这里的数据类型主要包括Number和String,对于其他数据类型,可以进行相应调整。
poi 单元格时间格式
poi 单元格时间格式POI是一款流行的Java库,用于处理 Microsoft Office 格式的文档。
在处理 Excel 文档时,常常需要对单元格的时间格式进行操作。
Excel 中有多种时间格式,比如日期时间、日期、时间等等。
对于单元格的时间格式,POI 提供了一些快捷方法,可以方便地进行格式化和解析。
下面介绍几个常用的 POI 时间格式方法:1. DateUtil.isCellDateFormatted(Cell cell)该方法用于判断单元格是否为日期格式。
如果是日期格式,则返回 true,否则返回 false。
2. DateUtil.getJavaDate(double value)该方法将 Excel 中表示日期时间的数字转换为 Java 中的日期对象。
需要注意的是,Excel 中表示日期时间的数字是一个浮点数,整数部分表示日期,小数部分表示时间。
3. DateUtil.getExcelDate(Date date)该方法将 Java 中的日期对象转换为 Excel 中的日期时间数字。
4. CellStyle.setDataFormat(int format)该方法用于设置单元格的时间格式。
参数 format 是一个整数,表示时间格式。
常用的时间格式有以下几种:yyyy-MM-dd hh:mm:ss // 日期时间格式,如 2021-05-0112:00:00yyyy-MM-dd // 日期格式,如 2021-05-01hh:mm:ss // 时间格式,如 12:00:00以上是几个常用的 POI 时间格式方法,可以方便地进行 Excel 中时间格式的操作。
poi设置单元格格式
1.设置单元格为文本格式HSSFCellStyle cellStyle2 = demoWorkBook.createCellStyle();HSSFDataFormat format = demoWorkBook.createDataFormat();cellStyle2.setDataFormat(format.getFormat("@"));cell.setCellStyle(cellStyle2);第一种:日期格式cell.setCellValue(new Date(2008,5,5));//set date formatHSSFCellStyle cellStyle = demoWorkBook.createCellStyle();HSSFDataFormat format= demoWorkBook.createDataFormat();cellStyle.setDataFormat(format.getFormat("yyyy年m月d日"));cell.setCellStyle(cellStyle);第二种:保留两位小数格式cell.setCellValue(1.2);HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));cell.setCellStyle(cellStyle);第三种:货币格式cell.setCellValue(20000);HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();HSSFDataFormat format= demoWorkBook.createDataFormat();cellStyle.setDataFormat(format.getFormat("¥#,##0"));cell.setCellStyle(cellStyle);第四种:百分比格式cell.setCellValue(20);HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00%"));cell.setCellStyle(cellStyle);此种情况跟第二种一样第五种:中文大写格式cell.setCellValue(20000);HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();HSSFDataFormat format= demoWorkBook.createDataFormat();cellStyle.setDataFormat(format.getFormat("[DbNum2][$-804]0"));cell.setCellStyle(cellStyle);第六种:科学计数法格式cell.setCellValue(20000);HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();cellStyle.setDataFormat( HSSFDataFormat.getBuiltinFormat("0.00E+00"));cell.setCellStyle(cellStyle);。
POI设置EXCEL单元格格式的作小结
POI设置EXCEL单元格格式的*作小结先获取工作薄对象:HSSFWorkbookwb=newHSSFWorkbook();HSSFSheetsheet=wb.createSheet();HSSFCellStylesetBorder=wb.createCellStyle();一、设置背景*:setBorder.setFillForegroundColor((short)13);//设置背景*setBorder.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND );二、设置边框:setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN);//下边框setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框三、设置居中:setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中四、设置字体:HSSFFontfont=wb.createFont();font.setFontName(黑体font.setFontHeightInPoints((short)16);//设置字体大小HSSFFontfont2=wb.createFont();font2.setFontName(仿宋_GB2312font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示font2.setFontHeightInPoints((short)12);setBorder.setFont(font);//选择需要用到的字体格式五、设置列宽:sheet.setColumnWidth(0,3766);//第一个参数代表列id(从0开始),第2个参数代表宽度值六、设置自动换行:setBorder.setWrapText(true);//设置自动换行七、合并单元格:Regionregion1=newRegion(0,(short)0,0,(short)6);//参数1:行号参数2:起始列号参数3:行号参数4:终止列号sheet.addMergedRegion(region1);附一个完整的例子:package.util;ermodel.HSSFCellStyle;ermodel.HSSFFont;ermodel.HSSFRichTextString;ermodel.HSSFWorkbook;ermodel.HSSFSheet;ermodel.HSSFRow;ermodel.HSSFCell;importorg.apache.poi.hssf.util.CellRangeAddress;importorg.apache.poi.hssf.util.Region;ermodel.CellStyle;importjava.io.FileOutputStream;importjavax.servlet.http.HttpServlet;publicclassCreateXLextendsHttpServlet{publicstaticStringoutputFile=c:test.xlsprivatevoidcteateCell(HSSFWorkbookwb,HSSFRowrow,short col,Stringval){HSSFCellcell=row.createCell(col);//cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(val);HSSFCellStylecellstyle=wb.createCellStyle();cellstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECT ION);cell.setCellStyle(cellstyle);}publicstaticvoidmain(Stringargv[]){try{//创建新的Excel工作簿HSSFWorkbookworkbook=newHSSFWorkbook();//设置字体HSSFFontfont=workbook.createFont();//font.setColor(HSSFFont.COLOR_RED);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);font.setFontHeightInPoints((short)14);//HSSFFontfont2=workbook.createFont();//font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//font.setFontHeightInPoints((short)14);//设置样式HSSFCellStylecellStyle=workbook.createCellStyle();cellStyle.setFont(font);cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//HSSFCellStylecellStyle2=workbook.createCellStyle();//cellStyle.setFont(font2);//cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//在Excel工作簿中建一工作表,其名为缺省值//如要新建一名为月报表的工作表,其语句为:HSSFSheetsheet=workbook.createSheet(月报表CellRangeAddresscellRangeAddress=newCellRangeAddress (0,0,0,11);sheet.addMergedRegion(cellRangeAddress);//第一行//在索引0的位置创建行(最顶端的行)HSSFRowrow=sheet.createRow(0);//在索引0的位置创建单元格(左上端)HSSFCellcell=row.createCell(0);//定义单元格为字符串类型cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setCellStyle(cellStyle);//在单元格中输入一些内容cell.setCellValue(newHSSFRichTextString(*亿卡联科技发展有限公司小区门禁维修月报表//第二行cellRangeAddress=newCellRangeAddress(1,1,3,6);sheet.addMergedRegion(cellRangeAddress);row=sheet.createRow(1);HSSFCelldatecell=row.createCell(3);datecell.setCellType(HSSFCell.CELL_TYPE_STRING);datecell.setCellStyle(cellStyle);datecell.setCellValue(时间间隔xxxxxcellRangeAddress=newCellRangeAddress(1,1,9,10);sheet.addMergedRegion(cellRangeAddress);row.createCell(9).setCellValue(单位:元//第三行row=sheet.createRow(2);row.createCell(0).setCellValue(一、row.createCell(1).setCellValue(基本资料//第4行row=sheet.createRow(3);row.createCell(1).setCellValue(小区名称:cellRangeAddress=newCellRangeAddress(3,3,2,11); sheet.addMergedRegion(cellRangeAddress);row.createCell(2).setCellValue(xxxxx//第5行row=sheet.createRow(4);row.createCell(1).setCellValue(座落地点:cellRangeAddress=newCellRangeAddress(4,4,2,11); sheet.addMergedRegion(cellRangeAddress);row.createCell(2).setCellValue(xxxxx//第6行row=sheet.createRow(5);row.createCell(1).setCellValue(建成年月:cellRangeAddress=newCellRangeAddress(5,5,2,4); sheet.addMergedRegion(cellRangeAddress);row.createCell(2).setCellValue(年月日:xxxxxrow.createCell(5).setCellValue(联系人cellRangeAddress=newCellRangeAddress(5,5,6,8); sheet.addMergedRegion(cellRangeAddress);row.createCell(6).setCellValue(XXXrow.createCell(9).setCellValue(电话cellRangeAddress=newCellRangeAddress(5,5,10,11); sheet.addMergedRegion(cellRangeAddress);row.createCell(10).setCellValue(XXX//第7行row=sheet.createRow(6);row.createCell(1).setCellValue(住户:row.createCell(2).setCellValue((XX)row.createCell(3).setCellValue((户)cellRangeAddress=newCellRangeAddress(6,6,4,5); sheet.addMergedRegion(cellRangeAddress); row.createCell(4).setCellValue(共计()row.createCell(6).setCellValue(幢cellRangeAddress=newCellRangeAddress(6,6,7,8); sheet.addMergedRegion(cellRangeAddress); row.createCell(7).setCellValue(发卡张数cellRangeAddress=newCellRangeAddress(6,6,9,10); sheet.addMergedRegion(cellRangeAddress); row.createCell(9).setCellValue(xxxx//第9行row=sheet.createRow(8);row.createCell(0).setCellValue(二、cellRangeAddress=newCellRangeAddress(8,8,1,2); sheet.addMergedRegion(cellRangeAddress); row.createCell(1).setCellValue(维修用材料台账row.createCell(6).setCellValue(三、cellRangeAddress=newCellRangeAddress(8,8,7,9); sheet.addMergedRegion(cellRangeAddress); row.createCell(7).setCellValue(维修工时记录//第10行row=sheet.createRow(9);row.createCell(0).setCellValue(日期row.createCell(1).setCellValue(维修事项row.createCell(2).setCellValue(材料清单row.createCell(3).setCellValue(数量row.createCell(4).setCellValue(单价row.createCell(5).setCellValue(材料金额row.createCell(7).setCellValue(日期row.createCell(8).setCellValue(技工row.createCell(9).setCellValue(工时数row.createCell(10).setCellValue(单价row.createCell(11).setCellValue(工时金额//填充数据for(inti=0;ii++){row=sheet.createRow(9+i+1);row.createCell(0).setCellValue(日期row.createCell(1).setCellValue(维修事项row.createCell(2).setCellValue(材料清单row.createCell(3).setCellValue(数量row.createCell(4).setCellValue(单价row.createCell(5).setCellValue(材料金额row.createCell(7).setCellValue(日期row.createCell(8).setCellValue(技工row.createCell(9).setCellValue(工时数row.createCell(10).setCellValue(单价row.createCell(11).setCellValue(工时金额}//第n+10行row=sheet.createRow(9+10+1);//cellRangeAddress=newCellRangeAddress(19,19,0,4);//sheet.addMergedRegion(cellRangeAddress);row.createCell(0).setCellValue(累计:row.createCell(1).setCellValue(xxxrow.createCell(7).setCellValue(累计:row.createCell(8).setCellValue(xxx//新建一输出文件流FileOutputStreamfOut=newFileOutputStream(outputFile); //把相应的Excel工作簿存盘workbook.write(fOut);fOut.flush();//*作结束,关闭文件fOut.close();System.out.println(文件生成...}catch(Exceptione){System.out.println(已运行xlCreate():。
poi cellstyle用法
POI(Apache POI)是一个用于处理Microsoft Office格式文件的Java库。
在POI中,CellStyle用于定义Excel单元格的样式,包括字体、颜色、对齐方式等。
下面是一些使用POI中CellStyle 的常见用法:1. 创建CellStyle对象:```javaWorkbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet1");CellStyle cellStyle = workbook.createCellStyle();```2. 设置字体样式:```javaFont font = workbook.createFont();font.setFontName("Arial");font.setFontHeightInPoints((short) 12);font.setBold(true);cellStyle.setFont(font);```3. 设置单元格背景颜色:```javacellStyle.setFillForegroundColor(IndexedColors.YELLOW.getInde x());cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);```4. 设置边框样式:```javacellStyle.setBorderTop(BorderStyle.THIN);cellStyle.setBorderBottom(BorderStyle.THIN);cellStyle.setBorderLeft(BorderStyle.THIN);cellStyle.setBorderRight(BorderStyle.THIN);```5. 设置文本对齐方式:```javacellStyle.setAlignment(HorizontalAlignment.CENTER);cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);```6. 应用CellStyle到单元格:```javaRow row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("Hello, World!");cell.setCellStyle(cellStyle);```这些是一些基本的CellStyle的用法示例。
npio excel 设置单元格类型
最近,我研究了如何在npoi excel中设置单元格的类型,对此我有一些深入的理解,现在我将与你共享一些关于这个主题的观点和理解。
让我们来探讨一下什么是npio excel。
NPOI是一个用于读写Microsoft Office格式文档的.NET库,它可以让我们在.NET应用程序中操作Word、Excel和PowerPoint文档。
它的灵活性和功能强大性使得我们可以轻松地对Excel中的单元格进行各种设置,包括设置单元格的类型。
在使用NPOI操作Excel时,我们经常需要设置单元格的类型。
单元格的类型可以是文本、数值、日期、公式等。
根据单元格的类型不同,我们可以对单元格中的数据进行不同的处理和计算。
设置单元格的类型是非常重要的,可以影响到我们对Excel数据的处理和分析。
接下来,我将以从简到繁、由浅入深的方式来介绍如何在NPOI中设置单元格的类型。
我们需要创建一个Excel文档,并向其中添加一些数据。
我们可以通过NPOI来操作这些数据,并设置单元格的类型。
1. 创建Excel文档并添加数据在使用NPOI操作Excel时,首先需要创建一个Excel文档并向其中添加一些数据。
我们可以使用NPOI提供的类和方法来实现这一步骤。
我们可以使用HSSFWorkbook类来创建一个新的Excel文档,然后使用HSSFSheet和HSSFRow类来向文档中添加工作表和行,最后使用HSSFCell类来向行中添加单元格并设置其数值。
2. 设置单元格的类型一旦我们向Excel文档中添加了数据,就可以使用NPOI来设置单元格的类型。
NPOI提供了丰富的API和方法来操作单元格,我们可以通过这些方法来设置单元格的类型。
我们可以使用HSSFCell的setCellType方法来设置单元格的类型,该方法接受一个CellType枚举作为参数,可以设置单元格的类型为文本、数值、日期、公式等。
3. 对设置的单元格类型进行操作一旦我们设置了单元格的类型,就可以对这些单元格进行各种操作。
单元格样式
POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:先获取工作薄对象:HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet();HSSFCellStyle setBorder = wb.createCellStyle();一、设置背景色:setBorder.setFillForegroundColor((short) 13);// 设置背景色setBorder.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);二、设置边框:setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框三、设置居中:setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中四、设置字体:HSSFFont font = wb.createFont();font.setFontName("黑体");font.setFontHeightInPoints((short) 16);//设置字体大小HSSFFont font2 = wb.createFont();font2.setFontName("仿宋_GB2312");font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示font2.setFontHeightInPoints((short) 12);setBorder.setFont(font);//选择需要用到的字体格式五、设置列宽:sheet.setColumnWidth(0, 3766); //第一个参数代表列id(从0开始),第2个参数代表宽度值六、设置自动换行:setBorder.setWrapText(true);//设置自动换行七、合并单元格:Region region1 = new Region(0, (short) 0, 0, (short) 6);//参数1:行号参数2:起始列号参数3:行号参数4:终止列号sheet.addMergedRegion(region1);八、加边框HSSFCellStyle cellStyle= wookBook.createCellStyle();cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);cellStyle.setBorderBottom(HSSFCellStyle.BorderBORDER_MEDIUM);cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);cellStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);cellStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);cellStyle.setRightBorderColor(HSSFColor.BLACK.index);cellStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);cellStyle.setTopBorderColor(HSSFColor.BLACK.index);例子:@ResponseBody@RequestMapping(value = "/reportForms/joinStocktaking/exportStorage.api")public AjaxResponse exportStorage(@RequestBody StorageModel model) throws Exception { if (logger.isDebugEnabled())logger.debug("tmpdir is, {}", System.getProperty(JAVA_IO_TMPDIR));int row = 1;HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet hssfSheet = workbook.createSheet();HSSFCellStyle style = workbook.createCellStyle();style.setFillBackgroundColor(HSSFCellStyle.LEAST_DOTS);style.setFillPattern(HSSFCellStyle.LEAST_DOTS);//设置Excel中的边框(表头的边框)style.setAlignment(HSSFCellStyle.ALIGN_CENTER);style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);style.setBottomBorderColor(HSSFColor.BLACK.index);style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);style.setLeftBorderColor(HSSFColor.BLACK.index);style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);style.setRightBorderColor(HSSFColor.BLACK.index);style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);style.setTopBorderColor(HSSFColor.BLACK.index);//设置字体HSSFFont font = workbook.createFont();font.setFontHeightInPoints((short) 14); // 字体高度font.setFontName(" 黑体"); // 字体style.setFont(font);HSSFRow firstRow = hssfSheet.createRow((short) 0);HSSFCell firstCell = firstRow.createCell(0);firstRow.setHeight((short) 400);//设置Excel中的背景style.setFillForegroundColor(HSSFColor.GREEN.index);style.setFillBackgroundColor(HSSFColor.GREEN.index);firstCell.setCellValue(new HSSFRichTextString("库房"));firstCell.setCellStyle(style);HSSFCell secondCell = firstRow.createCell(1);firstRow.setHeight((short) 400);style.setFillForegroundColor(HSSFColor.GREEN.index);style.setFillBackgroundColor(HSSFColor.GREEN.index);secondCell.setCellValue(new HSSFRichTextString("库区"));secondCell.setCellStyle(style);HSSFCell threeCell = firstRow.createCell(2);firstRow.setHeight((short) 400);style.setFillForegroundColor(HSSFColor.GREEN.index);style.setFillBackgroundColor(HSSFColor.GREEN.index);threeCell.setCellValue(new HSSFRichTextString("物料编号"));threeCell.setCellStyle(style);HSSFCell fourCell = firstRow.createCell(3);firstRow.setHeight((short) 400);style.setFillForegroundColor(HSSFColor.GREEN.index);style.setFillBackgroundColor(HSSFColor.GREEN.index);fourCell.setCellValue(new HSSFRichTextString("物料名称"));fourCell.setCellStyle(style);HSSFCell fiveCell = firstRow.createCell(4);firstRow.setHeight((short) 400);style.setFillForegroundColor(HSSFColor.GREEN.index);style.setFillBackgroundColor(HSSFColor.GREEN.index);fiveCell.setCellValue(new HSSFRichTextString("在库数量"));fiveCell.setCellStyle(style);HSSFCell sixCell = firstRow.createCell(5);firstRow.setHeight((short) 400);style.setFillForegroundColor(HSSFColor.GREEN.index);style.setFillBackgroundColor(HSSFColor.GREEN.index);sixCell.setCellValue(new HSSFRichTextString("锁定数量"));sixCell.setCellStyle(style);//设置列宽hssfSheet.setColumnWidth(0, 7000);hssfSheet.setColumnWidth(1, 8000);hssfSheet.setColumnWidth(2, 4000);hssfSheet.setColumnWidth(3, 6000);hssfSheet.setColumnWidth(4, 4000);hssfSheet.setColumnWidth(5, 4000);List list = joinStocktackingService.findjoinStorageByTerm(model.getWareHouse(), model.getStockArea(), model.getMaterialCode(), model.getMaterialName());for (Object object : list) {Object[] objects = (Object[]) object;Storage storage = (Storage) objects[0];Warehouse warehouse = (Warehouse) objects[1];StockArea stockArea = (StockArea) objects[2];Material material = (Material) objects[3];//设置Excel中的边框HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);cellStyle.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM);cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);cellStyle.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);cellStyle.setLeftBorderColor(HSSFColor.BLACK.index);cellStyle.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);cellStyle.setRightBorderColor(HSSFColor.BLACK.index);cellStyle.setBorderTop(HSSFCellStyle.BORDER_MEDIUM);cellStyle.setTopBorderColor(HSSFColor.BLACK.index);HSSFRow hssfRow = hssfSheet.createRow((short) row);HSSFCell firstHssfCell = hssfRow.createCell(0);//库房firstHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);firstHssfCell.setCellValue(new HSSFRichTextString(warehouse.getName()));firstHssfCell.setCellStyle(cellStyle);//设置单元格的样式HSSFCell secondHssfCell = hssfRow.createCell(1);secondHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);secondHssfCell.setCellValue(new HSSFRichTextString(stockArea.getName())); secondHssfCell.setCellStyle(cellStyle);//设置单元格的样式HSSFCell threeHssfCell = hssfRow.createCell(2);threeHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);threeHssfCell.setCellValue(new HSSFRichTextString(material.getCode()));threeHssfCell.setCellStyle(cellStyle);//设置单元格的样式HSSFCell fourHssfCell = hssfRow.createCell(3);fourHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);fourHssfCell.setCellValue(new HSSFRichTextString(material.getName()));fourHssfCell.setCellStyle(cellStyle);//设置单元格的样式HSSFCell fiveHssfCell = hssfRow.createCell(4);fiveHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);fiveHssfCell.setCellValue(new HSSFRichTextString(String.valueOf(storage.getQty()))); fiveHssfCell.setCellStyle(cellStyle);//设置单元格的样式HSSFCell sixHssfCell = hssfRow.createCell(5);sixHssfCell.setCellType(HSSFCell.CELL_TYPE_STRING);sixHssfCell.setCellValue(new HSSFRichTextString(String.valueOf(storage.getQtyLocked()))); sixHssfCell.setCellStyle(cellStyle);//设置单元格的样式row++;}String newFileName = String.format("%s.%s", "joinStocktaking-" + (new Date()).getTime(), "xls"); String uploadPath = FileUtils.contractPath(System.getProperty(JAVA_IO_TMPDIR), newFileName); FileOutputStream fOut = new FileOutputStream(uploadPath);workbook.write(fOut);fOut.flush();fOut.close();return AjaxResponse.createSuccess(newFileName);}Java操作excel(HSSF样式一)import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import ermodel.HSSFCell;import ermodel.HSSFCellStyle;import org.apache.poi.hssf.util.HSSFColor;import org.apache.poi.hssf.util.Region;import ermodel.HSSFFont;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;HSSFCellStyle类代表一种单元格样式。
scala使用poi处理excel笔记
scala使⽤poi处理excel笔记1、版本问题HSSFWorkbook操作Excel2003及以前版本,扩展名是.xlsXSSFWorkbook操作Excel2007及以后的版本,扩展名是.xlsx2、判断单元格是否为空判断单元格对象是否为空且内容是否为空字符串:/*** 判断单元格是否为空,true为空** @param cell 单元格对象* @return boolean*/def isEmptyCell(cell: Cell): Boolean = {cell == null || cell.getCellTypeEnum.equals(CellType.BLANK)}3、以字符串格式取出单元格内容因为取出单元格内容时必须使⽤固定⽅法取出对应类型的数据,类型不匹配会报错,如果想内容都以字符串取出时可以⽤DataFormatter类进⾏格式化:val formatter: DataFormatter = new DataFormatter//将单元格对象传⼊获得string类型的数据val value: String = formatter.formatCellValue(cell)以其它已知格式取出内容://只有数字类型,如果需要精确需要转型,例如以下的int类型val value: Int = cell.getNumericCellValue.toInt4、获取excel总⾏数、列数//获取所有⾏数,不包括空⾏val rowNum: Int = sheet.getPhysicalNumberOfRows//获取最后⼀⾏编号,包括空⾏val lastRowNum: Int = sheet.getLastRowNum//获取该⾏不包括空的所有个数val cellNum: Int = row.getPhysicalNumberOfCells//获取该⾏最后⼀个单元格的编号val lastCellNum: Int = row.getLastCellNum5、设置单元格风格val workbook: HSSFWorkbook = new HSSFWorkbook()//设置字体对象,加粗,12号val font: HSSFFont = workbook.createFont()font.setFontHeightInPoints(12)//设置单元格风格对象val cellStyle: HSSFCellStyle = workbook.createCellStyle()cellStyle.setFont(font) //将字体设置到风格中cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex) //设置填充颜⾊cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND) //设置填充模式cellStyle.setBorderBottom(BorderStyle.DASH_DOT); //下边框cellStyle.setBorderLeft(BorderStyle.DASH_DOT);//左边框cellStyle.setBorderTop(BorderStyle.DASH_DOT);//上边框cellStyle.setBorderRight(BorderStyle.DASH_DOT);//右边框//创建sheet页名val sheet: HSSFSheet = workbook.createSheet("template") //创建第⼀⾏对象val firstRow: HSSFRow = sheet.createRow(0)//创建第⼀⾏第⼀个单元格对象val firstCell: HSSFCell = firstRow.createCell(0)//将单元格应⽤风格firstCell.setCellStyle(cellStyle)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:先获取工作薄对象:Java代码HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet();HSSFCellStyle setBorder = wb.createCellStyle();HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet();HSSFCellStyle setBorder = wb.createCellStyle();一、设置背景色:Java代码setBorder.setFillForegroundColor((short) 13);// 设置背景色setBorder.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); setBorder.setFillForegroundColor((short) 13);// 设置背景色setBorder.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);二、设置边框:Java代码setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框三、设置居中:Java代码setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中四、设置字体:Java代码HSSFFont font = wb.createFont();font.setFontName("黑体");font.setFontHeightInPoints((short) 16);//设置字体大小HSSFFont font2 = wb.createFont();font2.setFontName("仿宋_GB2312");font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示font2.setFontHeightInPoints((short) 12);setBorder.setFont(font);//选择需要用到的字体格式HSSFFont font = wb.createFont();font.setFontName("黑体");font.setFontHeightInPoints((short) 16);//设置字体大小HSSFFont font2 = wb.createFont();font2.setFontName("仿宋_GB2312");font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示font2.setFontHeightInPoints((short) 12);setBorder.setFont(font);//选择需要用到的字体格式五、设置列宽:Java代码sheet.setColumnWidth(0, 3766); //第一个参数代表列id(从0开始),第2个参数代表宽度值sheet.setColumnWidth(0, 3766); //第一个参数代表列id(从0开始),第2个参数代表宽度值六、设置自动换行:Java代码setBorder.setWrapText(true);//设置自动换行setBorder.setWrapText(true);//设置自动换行七、合并单元格:Java代码Region region1 = new Region(0, (short) 0, 0, (short) 6);//参数1:行号参数2:起始列号参数3:行号参数4:终止列号sheet.addMergedRegion(region1);Region region1 = new Region(0, (short) 0, 0, (short) 6);//参数1:行号参数2:起始列号参数3:行号参数4:终止列号sheet.addMergedRegion(region1);附一个完整的例子:Java代码package .util;import ermodel.HSSFCellStyle;import ermodel.HSSFFont;import ermodel.HSSFRichTextString;import ermodel.HSSFWorkbook;import ermodel.HSSFSheet;import ermodel.HSSFRow;import ermodel.HSSFCell;import org.apache.poi.hssf.util.CellRangeAddress;import org.apache.poi.hssf.util.Region;import ermodel.CellStyle;import java.io.FileOutputStream;import javax.servlet.http.HttpServlet;public class CreateXL extends HttpServlet {/** Excel 文件要存放的位置,假定在D盘下*/public static String outputFile = "c:\\test.xls";private void cteateCell(HSSFWorkbook wb, HSSFRow row, short col, String val) { HSSFCell cell = row.createCell(col);// cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellV alue(val);HSSFCellStyle cellstyle = wb.createCellStyle();cellstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);cell.setCellStyle(cellstyle);}public static void main(String argv[]) {try {// 创建新的Excel 工作簿HSSFWorkbook workbook = new HSSFWorkbook();// 设置字体HSSFFont font = workbook.createFont();// font.setColor(HSSFFont.COLOR_RED);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);font.setFontHeightInPoints((short) 14);// HSSFFont font2 = workbook.createFont();// font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// font.setFontHeightInPoints((short)14);// 设置样式HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setFont(font);cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// HSSFCellStyle cellStyle2= workbook.createCellStyle();// cellStyle.setFont(font2);// cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 在Excel工作簿中建一工作表,其名为缺省值// 如要新建一名为"月报表"的工作表,其语句为:HSSFSheet sheet = workbook.createSheet("月报表");CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0,11);sheet.addMergedRegion(cellRangeAddress);//第一行// 在索引0的位置创建行(最顶端的行)HSSFRow row = sheet.createRow(0);// 在索引0的位置创建单元格(左上端)HSSFCell cell = row.createCell(0);// 定义单元格为字符串类型cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setCellStyle(cellStyle);// 在单元格中输入一些内容cell.setCellV alue(new HSSFRichTextString("北京亿卡联科技发展有限公司小区门禁维修月报表"));//第二行cellRangeAddress = new CellRangeAddress(1, 1, 3, 6);sheet.addMergedRegion(cellRangeAddress);row = sheet.createRow(1);HSSFCell datecell = row.createCell(3);datecell.setCellType(HSSFCell.CELL_TYPE_STRING); datecell.setCellStyle(cellStyle);datecell.setCellV alue("时间间隔xxxxx");cellRangeAddress = new CellRangeAddress(1, 1, 9, 10);sheet.addMergedRegion(cellRangeAddress);row.createCell(9).setCellV alue("单位:元");//第三行row=sheet.createRow(2);row.createCell(0).setCellV alue("一、");row.createCell(1).setCellV alue("基本资料");//第4行row=sheet.createRow(3);row.createCell(1).setCellV alue("小区名称:"); cellRangeAddress=new CellRangeAddress(3,3,2,11); sheet.addMergedRegion(cellRangeAddress);row.createCell(2).setCellV alue("xxxxx");//第5行row=sheet.createRow(4);row.createCell(1).setCellV alue("座落地点:"); cellRangeAddress=new CellRangeAddress(4,4,2,11); sheet.addMergedRegion(cellRangeAddress);row.createCell(2).setCellV alue("xxxxx");//第6行row=sheet.createRow(5);row.createCell(1).setCellV alue("建成年月:"); cellRangeAddress=new CellRangeAddress(5,5,2,4); sheet.addMergedRegion(cellRangeAddress);row.createCell(2).setCellV alue("年月日:xxxxx"); row.createCell(5).setCellV alue("联系人"); cellRangeAddress=new CellRangeAddress(5,5,6,8); sheet.addMergedRegion(cellRangeAddress);row.createCell(6).setCellV alue("XXX");row.createCell(9).setCellV alue("电话"); cellRangeAddress=new CellRangeAddress(5,5,10,11); sheet.addMergedRegion(cellRangeAddress);row.createCell(10).setCellV alue("XXX");//第7行row=sheet.createRow(6);row.createCell(1).setCellV alue("住户:");row.createCell(2).setCellV alue("(XX)");row.createCell(3).setCellV alue("(户)"); cellRangeAddress=new CellRangeAddress(6,6,4,5); sheet.addMergedRegion(cellRangeAddress);row.createCell(4).setCellV alue("共计()"); row.createCell(6).setCellV alue("幢"); cellRangeAddress=new CellRangeAddress(6,6,7,8); sheet.addMergedRegion(cellRangeAddress);row.createCell(7).setCellV alue("发卡张数"); cellRangeAddress=new CellRangeAddress(6,6,9,10); sheet.addMergedRegion(cellRangeAddress);row.createCell(9).setCellV alue("xxxx");//第9行row=sheet.createRow(8);row.createCell(0).setCellV alue("二、"); cellRangeAddress=new CellRangeAddress(8,8,1,2); sheet.addMergedRegion(cellRangeAddress);row.createCell(1).setCellV alue("维修用材料台账"); row.createCell(6).setCellV alue("三、"); cellRangeAddress=new CellRangeAddress(8,8,7,9); sheet.addMergedRegion(cellRangeAddress);row.createCell(7).setCellV alue("维修工时记录");//第10行row=sheet.createRow(9);row.createCell(0).setCellV alue("日期");row.createCell(1).setCellV alue("维修事项");row.createCell(2).setCellV alue("材料清单");row.createCell(3).setCellV alue("数量");row.createCell(4).setCellV alue("单价");row.createCell(5).setCellV alue("材料金额");row.createCell(7).setCellV alue("日期");row.createCell(8).setCellV alue("技工");row.createCell(9).setCellV alue("工时数");row.createCell(10).setCellV alue("单价");row.createCell(11).setCellV alue("工时金额");//填充数据for (int i = 0; i < 10; i++) {row=sheet.createRow(9+i+1);row.createCell(0).setCellV alue("日期");row.createCell(1).setCellV alue("维修事项");row.createCell(2).setCellV alue("材料清单");row.createCell(3).setCellV alue("数量");row.createCell(4).setCellV alue("单价");row.createCell(5).setCellV alue("材料金额");row.createCell(7).setCellV alue("日期");row.createCell(8).setCellV alue("技工");row.createCell(9).setCellV alue("工时数");row.createCell(10).setCellV alue("单价");row.createCell(11).setCellV alue("工时金额");}//第n+10行row=sheet.createRow(9+10+1);//cellRangeAddress=new CellRangeAddress(19,19,0,4);//sheet.addMergedRegion(cellRangeAddress);row.createCell(0).setCellV alue("累计:");row.createCell(1).setCellV alue("xxx");row.createCell(7).setCellV alue("累计:");row.createCell(8).setCellV alue("xxx");// 新建一输出文件流FileOutputStream fOut = new FileOutputStream(outputFile); // 把相应的Excel 工作簿存盘workbook.write(fOut);fOut.flush();// 操作结束,关闭文件fOut.close();System.out.println("文件生成...");} catch (Exception e) {System.out.println("已运行xlCreate() : " + e);}}}。