POI操作Excel文档

合集下载

poi教程

poi教程

poi教程Poi教程概述:Poi是一款Java库,用于处理Microsoft Office格式文件,如Excel、Word和PowerPoint。

它提供了丰富的API,使开发人员能够读取、写入和修改这些文件。

Poi教程内容:1. 安装Poi库:首先,你需要下载并安装Poi库。

你可以从Apache的官方网站上找到最新版本的Poi库。

安装过程包括将Poi库添加到你的Java项目的构建路径中。

2. 创建Excel文档:使用Poi,你可以创建一个新的Excel文档。

你可以定义工作表、行和单元格,并在单元格中添加数据。

你还可以设置单元格的格式,如字体、颜色和边框。

3. 读取Excel文件:Poi可以读取现有的Excel文件。

你可以打开一个文件并读取工作表、行和单元格中的数据。

你还可以根据需要筛选和处理数据。

4. 写入Excel文件:除了读取数据,Poi还可以将数据写入现有的Excel文件。

你可以创建新的工作表、行和单元格,并在其中插入数据。

你可以使用Poi的API来设置单元格的格式和其他属性。

5. 处理Word和PowerPoint文件:除了处理Excel文件,Poi还可以读取和写入Word和PowerPoint文件。

你可以打开Word文档并访问其中的段落、表格和其他元素。

你还可以修改PowerPoint演示文稿中的幻灯片、文本和图像。

6. 添加图表和图像:Poi提供了创建和修改图表的功能。

你可以使用Poi的API创建各种类型的图表,并在其中添加数据。

此外,你还可以在Excel文件中添加图像,并设置其大小、位置和其他属性。

7. 导出数据:一旦你完成了对Excel、Word或PowerPoint文件的处理,你可以使用Poi将其导出为其他格式,如PDF或HTML。

这使得你可以轻松地共享和打印处理过的文件。

8. 错误处理和异常处理:在使用Poi时,可能会遇到各种错误和异常。

你需要学会如何正确处理这些错误,以确保你的代码能够顺利运行。

java的POI操作Excel文件

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的使用帮助(告诉你怎么使用poi的官网),操作word,excel,ppt

最直观的poi的使用帮助(告诉你怎么使用poi的官网),操作word,excel,ppt

最直观的poi的使⽤帮助(告诉你怎么使⽤poi的官⽹),操作
word,excel,ppt
最直观的poi的使⽤帮助(告诉你怎么使⽤poi的官⽹),poi操作word,excel,ppt
写在最前⾯
其实poi的官⽹上⾯有poi的各种类和接⼝的使⽤说明,还有⾮常详细的样例,所以照着这些样例来进⾏poi的开发会变得很容易。

就是excel的帮助⽂档,每⼀个链接都是⼀个实例。

说明
官⽹的Conponents APIs就告诉我们操作office的每⼀种⽂件需要的组件。

⽐如说word就需要HWPF(⽤来操作word2003,后缀为.doc)和XWPF(⽤来操作word2007,后缀为.docx)
Conponent Map⾥⾯就有每⼀个版块所属的jar包,⽐如HWPF组件的jar包就是poi-scratchpad。

我们来看下载好的(如何下载后⾯会说)poi-3.17包,根据上⾯的所属关系,我们可以轻松知道HWPF组件要⽤到poi-3.17.jar包,⽽XHPF 要⽤到poi-ooxml-3.17.jar包。

下载
现在最新的poi的版本为poi-bin-3.17-20170915,我们就⽤这个说明
把我们要的poi-bin-3.17-20170915.zip jar包下载下来就好。

实例
下⾯我们来到官⽹找到操作word的两个组件HWPF和XWPF的操作样例
我们以HWPF的Quick Guide页⾯来做说明
从这个页⾯的最右下⾓箭头指向的位置点下去,就会得到样例界⾯
为了⽅便读者,直接把这个链接的传送门弄下来:
到这个界⾯就可以⾃⼰去找⾃⼰喜欢的实例了。

【POI】hutool万能工具的poi使用(Excel操作)

【POI】hutool万能工具的poi使用(Excel操作)

【POI】hutool万能⼯具的poi使⽤(Excel操作)POI技术(hutool⼯具的简单使⽤)POI: java技术,操作excel⽂档hutool-excel:常⽤poi功能,简化封装成⼯具类写出⽂档数据:(1)导出数据报表①获得能够向excel表格中输出信息对象[流]writer = ExcelUtil.getWriter("⽂件路径");注释:excel表格⽂件标准后缀:*.xls、*.xlsx② excel表格数据包含:表头:指明当前列数据的含义每⾏:多个单元格的数据;List<Object> | Map<字符串标题,Object>表格:多⾏数据。

List<Map<表头,Object数据>>③将数据写出到Excel⽂档:writer.write(list);④关闭流:writer.close();(2)向输出流中写⼊数据①创建⼀个写出的⼯具:ExcelWriter ew = ExcelUtil.getWriter();②将list多⾏数据集合写⼊:writer.write(list);③ flush,将数据写⼊到指定输出流中:writer.flush(outputStream);④关闭流:writer.close();(3)设置表格的sheet的名字writer.renameSheet("xxx")读⼊⽂档数据:①创建⼀个读⼊的⼯具:ExcelReader reader = ExcelUtil.getReader("⽂件路径");②读取⾥⾯的数据:List<Map<String,Object>> list = reader.readAll();③关闭流:reader.close();实例代码:导出:准备:导⼊POI的jar以及hutool的jar①⽅式⼀:(表格信息写到对应的⽂件路径)ExcelUtil.getWriter("⽂件路径"); //直接写到⽂件⾥②⽅式⼆:(表格信息写到特定的输出流⾥)List<Person> list = new ArrayList<Person>();persons.add(new Person("1001", "黄浩", 1, 18, "233456789", "郑州"));persons.add(new Person("1002", "杨宁", 1, 18, "233456789", "郑州"));persons.add(new Person("1003", "洪诗鹏", 1, 18, "233456789", "郑州"));// 重要将数据转化为hutool-excel,能够直接写出的数据结构:List<Map<String,Object>>// 创建⼀个存储多⾏数据的listList<Map<String, Object>> persons = new ArrayList<Map<String, Object>>();for (Person person : list) {// 每个person信息,代表⼀⾏数据:Map<String,person的属性>Map<String, Object> map = new LinkedHashMap<String, Object>();map.put("编号", person.getId());map.put("名字", person.getName());map.put("年龄", person.getAge());map.put("地址", person.getAddress());persons.add(map); // 将当前⾏的数据,加⼊persons}ExcelWriter writer = ExcelUtil.getWriter("D:/person.xlsx");// ①创建写出数据到⽂档中的⼯具writer.renameSheet("联系⼈信息表"); //设置sheet的名字writer.write(persons); // ②将数据写出到⽂档导出⼯具中writer.flush(输出流);//输出流:可以是⽂件输出流,也可以是控制器的响应流进⾏下载writer.close(); // ③关闭流导⼊:①创建⼀个读⼊的⼯具:ExcelReader reader = ExcelUtil.getReader("D:/person.xlsx");②读取⾥⾯的数据:List<Map<String, Object>> list = reader.readAll();③关闭流:reader.close();。

poi 拷贝行 合并单元格

poi 拷贝行 合并单元格

poi 拷贝行合并单元格POI(Apache POI)是一个用于操作Microsoft Office文件的开源Java库。

在很多业务场景中,我们常常需要对Excel文件进行操作,例如读取数据、写入数据、格式化表格等。

其中,拷贝行和合并单元格是Excel操作中常见且有实用性的功能。

在本文中,我们将一步一步地介绍如何使用POI库来实现拷贝行和合并单元格的功能。

第一步:导入POI库首先,我们需要在Java工程中引入POI库。

POI库的最新稳定版本为5.0.0。

你可以在第二步:创建Excel文件在使用POI库操作Excel文件之前,我们首先需要创建一个Excel文件。

可以使用POI库提供的Workbook接口的实现类来创建一个新的工作簿对象。

以下是一个示例代码:javaimport ermodel.Workbook;import ermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;public class ExcelDemo {public static void main(String[] args) {Workbook workbook = new XSSFWorkbook(); 创建新的工作簿对象 try {FileOutputStream fileOutputStream = new FileOutputStream("sample.xlsx");workbook.write(fileOutputStream); 将工作簿写入输出流fileOutputStream.close();workbook.close(); 关闭工作簿} catch (IOException e) {e.printStackTrace();}}}在上面的示例代码中,我们创建了一个名为"sample.xlsx"的新Excel文件,并将其保存在当前工作目录中。

poi数据使用

poi数据使用

poi数据使用POI(Apache POI)是一个用于操作Microsoft Office格式文件(如doc、xls、ppt等)的Java API。

它提供了一组类和方法,使开发人员可以轻松地读取、写入和操作Office文档中的数据。

本文将介绍如何使用POI来处理poi数据。

二、POI数据读取1. 导入POI库首先,我们需要在项目中导入POI库。

可以下载POI的jar文件,然后将其添加到项目的classpath中。

2. 创建工作簿和工作表使用POI来读取poi数据之前,我们需要创建一个工作簿和一个工作表对象。

可以使用HSSFWorkbook和HSSFSheet类来分别代表工作簿和工作表。

3. 读取数据使用POI的API方法,我们可以逐行或逐列读取poi数据。

可以使用HSSFRow和HSSFCell类来分别代表行和单元格。

通过遍历行和列的方式,可以获取到相应的数据。

三、POI数据写入1. 创建工作簿和工作表与数据读取类似,我们首先需要创建一个工作簿和一个工作表对象。

可以使用HSSFWorkbook和HSSFSheet类来分别代表工作簿和工作表。

2. 写入数据使用POI的API方法,我们可以将数据写入到指定的单元格中。

可以使用HSSFRow和HSSFCell类来分别代表行和单元格。

可以通过设置单元格的值来进行数据的写入操作。

四、POI数据操作注意事项1. 数据格式转换在进行POI数据读取或写入操作时,需要注意数据的格式转换。

例如,将数字类型的数据转换为字符串,或将字符串类型的数据转换为日期类型。

2. 数据校验在写入数据之前,我们需要进行数据校验,确保所写入的数据符合需求。

例如,对于字符串类型的数据,可以进行长度、格式等校验。

3. 数据样式设置为了使POIpoi数据的呈现更加美观,我们可以设置数据的样式。

可以使用HSSFCellStyle类来设置单元格的字体、背景色、边框等样式。

本文介绍了如何使用POI对poi数据进行读取和写入操作。

poi常用方法

poi常用方法Poi是指POI(Poor Obfuscation Implementation),是一份Apache下开源的Java组件,主要用于操作Excel格式的文档。

Poi功能丰富,应用广泛,下面将围绕poi常用方法给大家做一篇介绍。

1.导入poi包在项目工程中,我们需要在pom.xml中引用poi相关的jar包,也可以在项目java源码中手动引用。

如果不想下载poi组件,也可以根据maven的配置文件向maven中心仓库请求自动下载。

2.创建工作簿使用poi操作Excel文档,第一步需要创建一个工作簿对象。

我们可以通过创建一个HSSFWorkbook对象或XSSFWorkbook对象来实现。

```HSSFWorkbook wb = new HSSFWorkbook();//创建xls文件XSSFWorkbook wb = new XSSFWorkbook();//创建xlsx文件```3.创建工作表Excel文档通常是由多个工作表组成,我们通过POI也可以创建工作表。

在创建工作簿之后,同样可以创建一个或多个工作表。

```HSSFSheet sheet = wb.createSheet();//创建xls工作表XSSFSheet sheet = wb.createSheet();//创建xlsx工作表```4.创建单元格Excel文档中常常有很多单元格,每个单元格都有固定的行和列。

POI也可以创建或修改单元格。

```HSSFRow row = sheet.createRow(0);//创建第一行HSSFCell cell = row.createCell(0);//创建第一列第一个单元格cell.setCellValue("这是一个单元格的值");//设置单元格的值```5.读取单元格我们可以使用POI来读取Excel文档中的单元格。

使用一个HSSFCell 对象可以读取一行数据的值。

POI操作大全(动态合并单元格为单元格生成一个自定义的数据显示格式自定义公式计算结果生

POI操作大全(动态合并单元格为单元格生成一个自定义的数据显示格式自定义公式计算结果生POI是一个用于操作Microsoft Office格式文件的Java库。

通过POI库,可以实现对Excel、Word和PowerPoint文件的读写操作。

本文将介绍POI库的一些常用操作,包括动态合并单元格、为单元格生成自定义的数据显示格式、自定义公式计算结果等。

一、动态合并单元格在Excel中,可以将多个相邻的单元格合并成一个单元格,以便显示更大的数据块。

POI库可以很方便地实现对合并单元格的操作。

1.创建合并区域:```javaCellRangeAddress region = new CellRangeAddress(rowStart, rowEnd, colStart, colEnd);sheet.addMergedRegion(region);```其中,rowStart和rowEnd表示合并区域的起始行和结束行,colStart和colEnd表示合并区域的起始列和结束列。

2.设置合并单元格的值:```javaCell cell = sheet.getRow(rowStart).createCell(colStart);cell.setCellValue("合并单元格的值");```这里,我们取合并区域的起始行和起始列,设置单元格的值。

二、为单元格生成一个自定义的数据显示格式在Excel中,可以对单元格的值设置格式,以便以不同的方式展示数据。

POI库提供了设置单元格格式的方法。

1.创建格式对象:```javaCellStyle cellStyle = workbook.createCellStyle(;```2.设置格式:```javaDataFormat dataFormat = workbook.createDataFormat(;short format = dataFormat.getFormat("自定义格式");cellStyle.setDataFormat(format);```其中,"自定义格式"是Excel中的一种格式化字符串。

poi读取xlsx文件原理

poi读取xlsx文件原理
POI读取XLSX文件的原理可以概括为以下几个步骤:
1.创建POI工作簿对象:首先,需要创建一个POI工作簿对象,该对象将代表Excel文件。

可以使用WorkbookFactory.create()方法来创建工作簿对象。

2.获取工作表对象:通过工作簿对象,可以获取到工作表对象。

可以使用getSheetAt()方法来获取特定索引的工作表对象,或者使用getSheetName()方法获取特定名称的工作表对象。

3.读取单元格数据:通过工作表对象,可以获取到单元格对象,并从中读取单元格数据。

可以使用getRow()方法获取行对象,然后使用getCell()方法获取单元格对象。

通过单元格对象,可以获取单元格的值、类型、格式等信息。

4.处理数据:在读取单元格数据后,可以根据需要进行数据处理。

例如,可以将数据存储到数据库中,或者将数据转换为其他格式。

5.关闭工作簿对象:最后,需要关闭工作簿对象,释放相关资源。

可以使用close()方法来关闭工作簿对象。

通过以上步骤,POI可以读取XLSX文件中的数据并进行处理。

需要注意的是,在使用POI读取Excel文件时,需要先安装相应的依赖库,例如Apache POI库。

同时,为了确保数据的准确性和完整性,需要对读取的数据进行校验和验证。

使用POI进行Excel操作的总结一——创建Workbook,Sheet,Row以及Cell

使⽤POI进⾏Excel操作的总结⼀——创建Workbook,Sheet,Row以及Cell前段时间,看在其他的⽹站上给出Excel⽂档的导⼊与导出操作,感觉很酷的样⼦,所以就学习了⼀下如何使⽤POI进⾏Excel的操作,现在对之前的学习过程进⾏⼀个总结。

⼀、现在普遍使⽤的Excel⽂档有xls以及xlsx这两种Excel⽂档,其中xls格式的Excel⽂档⼜分为5.0/95⼯作簿以及97-2003⼯作簿这两种。

需要注意的是,由于5.0/95⼯作簿的版本太低,现在的POI⽂档不再⽀持这种类型的Excel⽂档的读取⼯作,当试图读取这种类型的Excel⽂档的时候,POI会抛出⼀个异常(OldExcelFormatException)。

我现在使⽤的POI是3.14版本。

⼆、Workbook的创建1、由于Excel中存在xls以及xlsx这两种格式,所以创建⽅式也有所不同。

其中对于xls格式的⽂档,需要使⽤HSSFWorkbook来创建⼯作簿对象,⽽对于xlsx格式的Excel⽂档,则需要使⽤XSSFWrokbook来创建⼯作簿。

有⼀点需要注意的是,HSSFWorkbook与XSSFWorkbook 这两个类其实都是Workbook接⼝的⼀个实现类。

好了,下⾯就是创建⼯作簿对象的代码://创建⼀个不存在的excel⽂件private static Workbook createWorkbookIfNotExist(String fileName) throws Exception {Workbook wb = null;if(fileName.endsWith(".xls")) {wb = new HSSFWorkbook();} else if(fileName.endsWith(".xlsx")) {wb = new XSSFWorkbook();} else {throw new Exception("⽂件类型错误!");}try{OutputStream output = new FileOutputStream(fileName);wb.write(output);}catch(FileNotFoundException e) {System.out.println("⽂件创建失败,失败原因为:" + e.getMessage());throw new FileNotFoundException();}System.out.println(fileName + "⽂件创建成功!");return wb;}//创建⼀个新的或者已存在的Excel⽂档的Workbookpublic static Workbook createWorkbook(String fileName) throws Exception {InputStream input = null;Workbook wb = null;try{input = new FileInputStream(fileName);wb = WorkbookFactory.create(input);} catch(FileNotFoundException e) {System.out.println("要打开的⽂件不存在,正试图创建该⽂件,请稍后……!");wb = createWorkbookIfNotExist(fileName);} catch(OldExcelFormatException e) {System.out.println("⽂件打开失败,原因:要打开的Excel⽂件版本过低!");throw new OldExcelFormatException("⽂件版本过低");} finally {if(input != null) {input.close();}}return wb;}2、创建Sheet的时候,同样的也存在HSSFSheet以及XSSHSheet这两种类型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

POI操作Excel文档-基础篇(转)关键字: poi一.POI简介Jakarta POI 是apache的子项目,目标是处理ole2对象。

它提供了一组操纵Windows文档的Ja目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。

它不象我们仅仅是用csv生成的没式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等二.HSSF概况HSSF 是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”。

也许HSSF的名字滑稽,就本质而言它是一个非常严肃、正规的API。

通过HSSF,你可以用纯Java代码来读取、写入改Excel文件。

HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模前者很好理解,后者比较抽象,但操作效率要高得多。

三.开始编码1 .准备工作要求:JDK 1.4+POI开发包可以到 /dyn/closer.cgi/jakarta/poi/ 最新的POI工具包2 . EXCEL 结构HSSFWorkbook excell 文档对象介绍HSSFSheet excell的表单HSSFRow excell的行HSSFCell excell的格子单元HSSFFont excell字体HSSFName 名称HSSFDataFormat 日期格式在poi1.7中才有以下2项:HSSFHeader sheet头HSSFFooter sheet尾和这个样式HSSFCellStyle cell样式辅助操作包括HSSFDateUtil 日期HSSFPrintSetup 打印HSSFErrorConstants 错误信息表3 .具体用法实例(采用 usermodel )如何读Excel读取Excel文件时,首先生成一个POIFSFileSystem对象,由POIFSFileSystem对象构造一个HSSFWorkbook,该HSSFWorkbook对象就代表了Excel文档。

下面代码读取上面生成的Excel文件写消息字串:代码1.POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:\test.xls"));2.HSSFWorkbook wb = new HSSFWorkbook(fs);3.} catch (IOException e) {4. e.printStackTrace();5.}6.HSSFSheet sheet = wb.getSheetAt(0);7.HSSFRow row = sheet.getRow(0);8.HSSFCell cell = row.getCell((short) 0);9.String msg = cell.getStringCellValue();如何写excel,将excel的第一个表单第一行的第一个单元格的值写成“a test”。

代码1.POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream("workbook.xls"));2.3. HSSFWorkbook wb = new HSSFWorkbook(fs);4.5. HSSFSheet sheet = wb.getSheetAt(0);6.7. HSSFRow row = sheet.getRow(0);8.9. HSSFCell cell = row.getCell((short)0);10.11. cell.setCellValue("a test");12.13. // Write the output to a file14.15. FileOutputStream fileOut = new FileOutputStream("workbook.xls");16.17. wb.write(fileOut);18.19.fileOut.close();4 .可参考文档POI 主页:/poi/,初学者如何快速上手使用POI HSSF/poi/hssf/quick-guide.html 。

代码例子 /user1/6749/archives/2005/18347.html里面有很多例子代码,可以很方便上手。

四.使用心得POI HSSF 的usermodel包把Excel文件映射成我们熟悉的结构,诸如Workbook、Sheet、Row、Ce 它把整个结构以一组对象的形式保存在内存之中,便于理解,操作方便,基本上能够满足我们的要所以说这个一个不错的选择。

POI操作Excel文档-中级篇(转)1、遍历workbook代码1.// load源文件2.POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filePath));3.HSSFWorkbook wb = new HSSFWorkbook(fs);4.for (int i = 0; i < wb.getNumberOfSheets(); i++) {5. HSSFSheet sheet = wb.getSheetAt(i);6. for (int i = sheet.getFirstRowNum(); i < sheet.getLastRowNum(); i ++) {7. HSSFRow row = sheet.getRow(i);8. if (row != null) {9.。

操作}10. }11. }12.// 目标文件13.FileOutputStream fos = new FileOutputStream(objectPath);14.//写文件15.swb.write(fos);16.fos.close();2、得到列和单元格代码1.HSSFRow row = sheet.getRow(i);2.HSSFCell cell = row.getCell((short) j);3、设置sheet名称和单元格内容为中文代码1.wb.setSheetName(n, "中文",HSSFCell.ENCODING_UTF_16);2.cell.setEncoding((short) 1);3.cell.setCellValue("中文");4、单元格内容未公式或数值,可以这样读写代码1.cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);2.cell.getNumericCellValue()5、设置列宽、行高代码1.sheet.setColumnWidth((short)column,(short)width);2.row.setHeight((short)height);6、添加区域,合并单元格代码1.Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo,(short2.sheet.addMergedRegion(region);3.//得到所有区域4.sheet.getNumMergedRegions()7、常用方法根据单元格不同属性返回字符串数值代码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. }8、常用单元格边框格式虚线HSSFCellStyle.BORDER_DOTTED实线HSSFCellStyle.BORDER_THIN代码1.public static HSSFCellStyle getCellStyle(short type)2. {3. HSSFWorkbook wb = new HSSFWorkbook();4. HSSFCellStyle style = wb.createCellStyle();5. style.setBorderBottom(type);//下边框6. style.setBorderLeft(type);//左边框7. style.setBorderRight(type);//右边框8. style.setBorderTop(type);//上边框9. return style;10. }9、设置字体和内容位置代码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);//单元格内容的旋转的角度12.cell.setCellStyle(style);10、插入图片论坛里看到的代码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)13.patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWPOI Excel整理(转)1.创建工作簿 (WORKBOOK)HSSFWorkbook wb = new HSSFWorkbook();FileOutputStream fileOut = new FileOutputStream("workbook.xls");wb.write(fileOut);fileOut.close();2.创建工作表(SHEET)HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet1 = wb.createSheet("new sheet");HSSFSheet sheet2 = wb.createSheet("second sheet");FileOutputStream fileOut = new FileOutputStream("workbook.xls");wb.write(fileOut);fileOut.close();3.创建单元格(CELL)HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");// Create a row and put some cells in it. Rows are 0 based.HSSFRow row = sheet.createRow((short)0);// Create a cell and put a value in it.HSSFCell cell = row.createCell((short)0);cell.setCellValue(1);// Or do it on one line.row.createCell((short)1).setCellValue(1.2);row.createCell((short)2).setCellValue("This is a string");row.createCell((short)3).setCellValue(true);// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();4.创建指定单元格式的单元格HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");// Create a row and put some cells in it. Rows are 0 based.HSSFRow row = sheet.createRow((short)0);// Create a cell and put a date value in it. The first cell is not styled// as a date.HSSFCell cell = row.createCell((short)0);cell.setCellValue(new Date());// we style the second cell as a date (and time). It is important to// create a new cell style from the workbook otherwise you can end up// modifying the built in style and effecting not only this cell but other cells.HSSFCellStyle cellStyle = wb.createCellStyle();cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));cell = row.createCell((short)1);cell.setCellValue(new Date());cell.setCellStyle(cellStyle);// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();5. 单元格的不同格式HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");HSSFRow row = sheet.createRow((short)2);row.createCell((short) 0).setCellValue(1.1);row.createCell((short) 1).setCellValue(new Date());row.createCell((short) 2).setCellValue("a string");row.createCell((short) 3).setCellValue(true);row.createCell((short) 4).setCellType(HSSFCell.CELL_TYPE_ERROR); // Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();6.单元格的不通对齐方式public static void main(String[] args)throws IOException{HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");HSSFRow row = sheet.createRow((short) 2);createCell(wb, row, (short) 0, HSSFCellStyle.ALIGN_CENTER);createCell(wb, row, (short) 1,HSSFCellStyle.ALIGN_CENTER_SELECTION);createCell(wb, row, (short) 2, HSSFCellStyle.ALIGN_FILL);createCell(wb, row, (short) 3, HSSFCellStyle.ALIGN_GENERAL); createCell(wb, row, (short) 4, HSSFCellStyle.ALIGN_JUSTIFY); createCell(wb, row, (short) 5, HSSFCellStyle.ALIGN_LEFT);createCell(wb, row, (short) 6, HSSFCellStyle.ALIGN_RIGHT);// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();}/*** Creates a cell and aligns it a certain way.** @param wb the workbook* @param row the row to create the cell in* @param column the column number to create the cell in* @param align the alignment for the cell.*/private static void createCell(HSSFWorkbook wb, HSSFRow row, short column, short align){HSSFCell cell = row.createCell(column);cell.setCellValue("Align It");HSSFCellStyle cellStyle = wb.createCellStyle();cellStyle.setAlignment(align);cell.setCellStyle(cellStyle);}7.单元格的边框设置Working with bordersHSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");// Create a row and put some cells in it. Rows are 0 based.HSSFRow row = sheet.createRow((short) 1);// Create a cell and put a value in it.HSSFCell cell = row.createCell((short) 1);cell.setCellValue(4);// Style the cell with borders all around.HSSFCellStyle style = wb.createCellStyle();style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBottomBorderColor(HSSFColor.BLACK.index);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setLeftBorderColor(HSSFColor.GREEN.index);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setRightBorderColor(HSSFColor.BLUE.index);style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM_DASHED);style.setTopBorderColor(HSSFColor.BLACK.index);cell.setCellStyle(style);// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();8.填充和颜色设置HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");// Create a row and put some cells in it. Rows are 0 based.HSSFRow row = sheet.createRow((short) 1);// Aqua backgroundHSSFCellStyle style = wb.createCellStyle();style.setFillBackgroundColor(HSSFColor.AQUA.index);style.setFillPattern(HSSFCellStyle.BIG_SPOTS);HSSFCell cell = row.createCell((short) 1);cell.setCellValue("X");cell.setCellStyle(style);// Orange "foreground", foreground being the fill foreground not the font color.style = wb.createCellStyle();style.setFillForegroundColor(HSSFColor.ORANGE.index);style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);cell = row.createCell((short) 2);cell.setCellValue("X");cell.setCellStyle(style);// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();9.合并单元格操作HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");HSSFRow row = sheet.createRow((short) 1);HSSFCell cell = row.createCell((short) 1);cell.setCellValue("This is a test of merging");sheet.addMergedRegion(new Region(1,(short)1,1,(short)2));// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();10.字体设置HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");// Create a row and put some cells in it. Rows are 0 based.HSSFRow row = sheet.createRow((short) 1);// Create a new font and alter it.HSSFFont font = wb.createFont();font.setFontHeightInPoints((short)24);font.setFontName("Courier New");font.setItalic(true);font.setStrikeout(true);// Fonts are set into a style so create a new one to use.HSSFCellStyle style = wb.createCellStyle();style.setFont(font);// Create a cell and put a value in it.HSSFCell cell = row.createCell((short) 1);cell.setCellValue("This is a test of fonts");cell.setCellStyle(style);// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();11.自定义颜色HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet();HSSFRow row = sheet.createRow((short) 0);HSSFCell cell = row.createCell((short) 0);cell.setCellValue("Default Palette");//apply some colors from the standard palette,// as in the previous examples.//we'll use red text on a lime backgroundHSSFCellStyle style = wb.createCellStyle();style.setFillForegroundColor(HSSFColor.LIME.index);style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);HSSFFont font = wb.createFont();font.setColor(HSSFColor.RED.index);style.setFont(font);cell.setCellStyle(style);//save with the default paletteFileOutputStream out = new FileOutputStream("default_palette.xls"); wb.write(out);out.close();//now, let's replace RED and LIME in the palette// with a more attractive combination// (lovingly borrowed from )cell.setCellValue("Modified Palette");//creating a custom palette for the workbookHSSFPalette palette = wb.getCustomPalette();//replacing the standard red with redpalette.setColorAtIndex(HSSFColor.RED.index,(byte) 153, //RGB red (0-255)(byte) 0, //RGB green(byte) 0 //RGB blue);//replacing lime with goldpalette.setColorAtIndex(HSSFColor.LIME.index, (byte) 255, (byte) 204, (byte) 102);//save with the modified palette// note that wherever we have previously used RED or LIME, the// new colors magically appearout = new FileOutputStream("modified_palette.xls");wb.write(out);out.close();12.读和重写EXCEL文件POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream("workbook.xls")); HSSFWorkbook wb = new HSSFWorkbook(fs);HSSFSheet sheet = wb.getSheetAt(0);HSSFRow row = sheet.getRow(2);HSSFCell cell = row.getCell((short)3);if (cell == null)cell = row.createCell((short)3);cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setCellValue("a test");// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();13.在EXCEL单元格中使用自动换行HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet s = wb.createSheet();HSSFRow r = null;HSSFCell c = null;HSSFCellStyle cs = wb.createCellStyle();HSSFFont f = wb.createFont();HSSFFont f2 = wb.createFont();cs = wb.createCellStyle();cs.setFont( f2 );//Word Wrap MUST be turned oncs.setWrapText( true );r = s.createRow( (short) 2 );r.setHeight( (short) 0x349 );c = r.createCell( (short) 2 );c.setCellType( HSSFCell.CELL_TYPE_STRING );c.setCellValue( "Use \n with word wrap on to create a new line" );c.setCellStyle( cs );s.setColumnWidth( (short) 2, (short) ( ( 50 * 8 ) / ( (double) 1 / 20 ) ) );FileOutputStream fileOut = new FileOutputStream( "workbook.xls" ); wb.write( fileOut );fileOut.close();14.数字格式自定义HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("format sheet");HSSFCellStyle style;HSSFDataFormat format = wb.createDataFormat();HSSFRow row;HSSFCell cell;short rowNum = 0;short colNum = 0;row = sheet.createRow(rowNum++);cell = row.createCell(colNum);cell.setCellValue(11111.25);style = wb.createCellStyle();style.setDataFormat(format.getFormat("0.0"));cell.setCellStyle(style);row = sheet.createRow(rowNum++);cell = row.createCell(colNum);cell.setCellValue(11111.25);style = wb.createCellStyle();style.setDataFormat(format.getFormat("#,##0.0000"));cell.setCellStyle(style);FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();15.调整工作单位置HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("format sheet");HSSFPrintSetup ps = sheet.getPrintSetup();sheet.setAutobreaks(true);ps.setFitHeight((short)1);ps.setFitWidth((short)1);// Create various cells and rows for spreadsheet.FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();16.设置打印区域HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("Sheet1");wb.setPrintArea(0, "$A$1:$C$2");//sets the print area for the first sheet//Alternatively://wb.setPrintArea(0, 0, 1, 0, 0) is equivalent to using the name reference (See the JavaDocs for more details)// Create various cells and rows for spreadsheet.FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();17.标注脚注HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("format sheet");HSSFFooter footer = sheet.getFooter()footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );// Create various cells and rows for spreadsheet.FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();18.使用方便的内部提供的函数HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet1 = wb.createSheet( "new sheet" );// Create a merged regionHSSFRow row = sheet1.createRow( (short) 1 );HSSFRow row2 = sheet1.createRow( (short) 2 );HSSFCell cell = row.createCell( (short) 1 );cell.setCellValue( "This is a test of merging" );Region region = new Region( 1, (short) 1, 4, (short) 4 );sheet1.addMergedRegion( region );// Set the border and border colors.final short borderMediumDashed = HSSFCellStyle.BORDER_MEDIUM_DASHED; HSSFRegionUtil.setBorderBottom( borderMediumDashed,region, sheet1, wb );HSSFRegionUtil.setBorderTop( borderMediumDashed,region, sheet1, wb );HSSFRegionUtil.setBorderLeft( borderMediumDashed,region, sheet1, wb );HSSFRegionUtil.setBorderRight( borderMediumDashed,region, sheet1, wb );HSSFRegionUtil.setBottomBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);HSSFRegionUtil.setTopBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);HSSFRegionUtil.setLeftBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);HSSFRegionUtil.setRightBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);// Shows some usages of HSSFCellUtilHSSFCellStyle style = wb.createCellStyle();style.setIndention((short)4);HSSFCellUtil.createCell(row, 8, "This is the value of the cell", style);HSSFCell cell2 = HSSFCellUtil.createCell( row2, 8, "This is the value of the cell");HSSFCellUtil.setAlignment(cell2, wb, HSSFCellStyle.ALIGN_CENTER); // Write out the workbookFileOutputStream fileOut = new FileOutputStream( "workbook.xls" ); wb.write( fileOut );fileOut.close();19.在工作单中移动行,调整行的上下位置HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("row sheet");// Create various cells and rows for spreadsheet.// Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5)sheet.shiftRows(5, 10, -5);FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();20.选种指定的工作单HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("row sheet");sheet.setSelected(true);// Create various cells and rows for spreadsheet.FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();21.工作单的放大缩小HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet1 = wb.createSheet("new sheet");sheet1.setZoom(3,4); // 75 percent magnificationFileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();22.头注和脚注HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");HSSFHeader header = sheet.getHeader();header.setCenter("Center Header");header.setLeft("Left Header");header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16");FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut);fileOut.close();//-------------------------------以上实例代码均来自官方网站//-------------------------------POI中使用的颜色是用颜色索引来实现,如下:/** 颜色对照表数字代表颜色索引8: BLACK60: BROWN59: OLIVE_GREEN58: DARK_GREEN56: DARK_TEAL18: DARK_BLUE32: DARK_BLUE62: INDIGO63: GREY_80_PERCENT53: ORANGE19: DARK_YELLOW17: GREEN21: TEAL38: TEAL12: BLUE39: BLUE54: BLUE_GREY23: GREY_50_PERCENT10: RED52: LIGHT_ORANGE50: LIME57: SEA_GREEN49: AQUA48: LIGHT_BLUE20: VIOLET36: VIOLET55: GREY_40_PERCENT14: PINK33: PINK51: GOLD13: YELLOW34: YELLOW11: BRIGHT_GREEN35: BRIGHT_GREEN15: TURQUOISE35: TURQUOISE16: DARK_RED37: DARK_RED40: SKY_BLUE61: PLUM25: PLUM22: GREY_25_PERCENT45: ROSE43: LIGHT_YELLOW42: LIGHT_GREEN41: LIGHT_TURQUOISE27:LIGHT_TURQUOISE44: PALE_BLUE46: LAVENDER9: WHITE24: CORNFLOWER_BLUE26: LEMON_CHIFFON25: MAROON28: ORCHID29: CORAL30: ROYAL_BLUE31: LIGHT_CORNFLOWER_BLUE*///----------------------------------------------------你可以按上面的方法来自定义颜色/** 自定义颜色,去掉注释,贴加,其他则查看颜色对照表HSSFPalette palette = this.getCustomPalette();palette.setColorAtIndex(idx,i, //RGB red (0-255)j, //RGB greenk //RGB blue);*///---------------------------------------------------用以上的基础知识我们就可以制作复杂的多表头,控制元/。

相关文档
最新文档