`
lihao312
  • 浏览: 483464 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

POI写入Excel下拉框[Select选项]

    博客分类:
  • java
阅读更多
记录部分方法, 操作POI

POI version
<poi.version>3.10-FINAL</poi.version>
<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>${poi.version}</version>
        </dependency>


1.首先根据路径读取Excel模板
	/**
	 * 读取服务器上面的上传的excel文件
	 * 
	 * @param path
	 * @return
	 */
	public static Workbook readWorkBook(String path) {
		Workbook wb = null;

		try {
			wb = WorkbookFactory.create(new File(path));
		} catch (InvalidFormatException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return wb;
	}


2.获取到workbook后,设置哪些行列是下拉框[Select下拉],并设置数据
public String rewriteExcelTempAtEmp(String instance, String path, String upload) {
		//读取默认模板Excel文件
		Workbook workbook = ExcelUtils.readWorkBook(path);
		Sheet sheet = workbook.getSheetAt(0);
		DataValidationHelper helper = sheet.getDataValidationHelper(); 
		
		//CellRangeAddressList(firstRow, lastRow, firstCol, lastCol)设置行列范围
		CellRangeAddressList addressList = new CellRangeAddressList(3, 500, 17, 17);
		
		//设置下拉框数据
		String[]pos = posStatusName(instance);
		DataValidationConstraint constraint = helper.createExplicitListConstraint(pos); 
		DataValidation dataValidation = helper.createValidation(constraint, addressList);
		
		//处理Excel兼容性问题
		if(dataValidation instanceof XSSFDataValidation) {
			dataValidation.setSuppressDropDownArrow(true);
			dataValidation.setShowErrorBox(true);
		}else {
			dataValidation.setSuppressDropDownArrow(false);
		}
		
		sheet.addValidationData(dataValidation);
		
		String fileName = StringUtils.substringAfterLast(path, "/");
	    String newPath = upload+ExcelUtils.getRename(fileName, false);
	    
	    //由于POI打开读取文件后再保存时bug问题, 只能重新定义一个新的Excel写入数据
	    ExcelUtils.createExcel(workbook, newPath);
	    return newPath;
	}


3.由于workbook读取后,在保存原来excel会出现错误,这个是poi的一个小bug吧,官方
也没有看到怎么解释,只能修改后, 重新命名保存一个新的Excel模板
/**
	 * 根据路径创建Excel
	 * @author lance
	 * 2014年8月13日 下午4:06:10
	 * @param workbook
	 * @param path
	 */
	public static void createExcel(Workbook workbook, String path) {
	    FileOutputStream fileOut = null;
		try {
			fileOut = new FileOutputStream(path);
			workbook.write(fileOut);
		} catch (Exception e) {
			logger.error("Error create excel: ", e.getMessage());
		} finally {
			try {
				if(fileOut != null) {
					fileOut.close();
				}
				
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
0
0
分享到:
评论

相关推荐

    Java POI下载Excel模板 Excel带有下拉框的模板

    Java POI下载Excel模板 Excel带有下拉框的模板,并有详细注释,生成exlcel的下拉框,必填项标红,数字栏位防止科学计数法,并设置Excel标题样式

    利用POI读取excel写入到word

    本篇文章将详细讲解如何利用Apache POI库来读取Excel数据并将其写入到Word文档中。 首先,我们需要了解Apache POI的基本概念。POI提供了一组API,允许程序员在Java应用程序中创建、修改和显示这些文件。对于Excel...

    Poi 写入EXCEL

    Poi 写入EXCEL 插入一行Poi 写入EXCEL 插入一行

    poi 生成excel模板,下拉选项,批注。现在有模板中插入下拉信息

    在这个场景中,我们将讨论如何使用 POI 在 Java 中生成带有下拉选项和批注的 Excel 模板。 首先,我们需要理解 POI 的核心组件,如 HSSFWorkbook(用于 .xls 文件)和 XSSFWorkbook(用于 .xlsx 文件)。这些工作簿...

    使用POI解析excel文件并写入数据库

    使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...

    poi读写excel+poi总结

    以下是一个简单的Java示例,演示如何使用POI写入Excel: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import java.io.FileOutputStream; public class ...

    使用POI将数据写入到EXCEL

    本文将详细讲解如何利用POI将数据写入到Excel文档。 首先,你需要确保已经设置了Maven项目,并在pom.xml文件中添加了Apache POI的依赖。POI的最新版本通常可以在这里找到:...

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。

    poi导出下拉列表

    在Java编程领域,Apache POI 是一个非常流行的库,它允许开发者读取和写入Microsoft Office格式的文件,包括Excel。本主题将深入探讨如何使用Apache POI来创建具有下拉列表功能的Excel文件,以及如何实现数据有效性...

    POI实战-java开发excel.rar_Excel写入_JAVA 处理excel_POI_java 写入excel

    POI处理excel文件,主要包括Excel的读取、写入,各种数据格式处理、单元格合并、注释、下拉列表及单元格的边框、背景色、宽度调整等。

    使用POI操作Excel文件(写)

    Apache POI是一个流行的Java库,专门用于处理Microsoft Office格式的文件,包括Excel、Word和PowerPoint。在本文中,我们将深入探讨如何使用Apache POI来创建和修改Excel工作簿,特别是进行写操作。 首先,要使用...

    POI向excel中插入图片

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,包括Excel。在本文中,我们将深入探讨如何使用POI库向Excel工作簿中插入图片。这将涵盖相关的API,步骤以及一些实用技巧。 首先,我们需要...

    poi导出excel生成下拉列表

    poi作为导出excel常用的工具,方便快捷。对于excel指定下拉列表的列,如何生成呢?本文提供如何生成下拉列表的excel列

    POI导出Excel文件

    Apache POI是一个流行的Java库,用于读取和写入Microsoft Office格式的文件,尤其是Excel(.xlsx和.xls)文件。这个实例提供了两种方法来导出Excel文件:通过Servlet和通过main方法。这两种方法都是在Java环境中操作...

    poi excel poi excel poi excel

    通过上述介绍,我们可以看到 Apache POI 提供了非常强大的功能来处理 Excel 文件,无论是读取还是写入都非常方便。掌握 POI 的基本用法对于开发人员来说是非常有用的技能,特别是在需要处理大量数据时更是如此。希望...

    利用POI解析excel并存入数据库demo

    Apache POI 是一个开源项目,专门用于处理 Microsoft Office 格式的文件,如 Word、Excel 和 PowerPoint。在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效...

    poi动态生成导入模板,动态下拉菜单

    在IT行业中,Apache POI 是一个非常著名的Java库,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Excel(XLS和XLSX)。本话题聚焦于使用POI来动态生成带有下拉菜单的Excel导入模板,这在数据处理、...

    Jxl和poi读取写入excel

    本文将深入探讨如何使用Jxl和Apache POI库来读取和写入Excel文件,同时会区分2007年之后的.xlsx格式(基于OpenXML)和2003及之前的.xls格式(基于BIFF)。 首先,让我们了解一下Jxl库。Jxl是Java Excel API的简称,...

    POI 生成EXCEL2007【含例子】

    标题 "POI 生成EXCEL2007【含例子】" 涉及到的知识点主要集中在Apache POI库的使用上,这是一个强大的Java API,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel文件。在这个场景中,重点是创建和操作...

    POI 删除excel列

    POI 删除excel列,可以设置多列,POI里怎么没有删除列的API呢

Global site tag (gtag.js) - Google Analytics