java生成带有下拉列表框的Excel
Javapoi实现Excel下拉联动

Javapoi实现Excel下拉联动Java 实现Excel 下拉联动,本⽰例中实现了省市区乡镇村联动。
适⽤于03版本Exce。
⾸先我们需要导⼊我们依赖<!-- https:///artifact/org.apache.poi/poi --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><!-- https:///artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency><!--模板导⼊--><dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.1</version></dependency>代码实现如下:import ermodel.*;import ermodel.*;import org.apache.poi.ss.util.CellRangeAddressList;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.FileOutputStream;import java.io.IOException;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;/*** @Author zhouchuangbin* @Date 2021/8/2* @Description*/public class ExcelTest {/*** 影响最⼤⾏数*/private static final int XLS_MAX_ROW = 60000;/*** 导出模板** @param provinceList* @param areaFatherNameList* @param areaMap* @throws IOException*/public static void exportHSSFTemplate(List<String> provinceList, List<String> areaFatherNameList, Map<String, List<String>> areaMap) { String[] tileList = new String[]{"姓名", "⼿机号", "省", "市", "县", "乡镇", "村"};//创建⼯作簿对象HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("sheet");sheet.setDefaultColumnWidth(18);HSSFRow row = sheet.createRow(0);HSSFCellStyle style = getStyle(wb);HSSFCell cell = null;int provinceIndex = 0;for (int i = 0; i < tileList.length; i++) {String title = tileList[i];if ("省".equals(title)) {provinceIndex = i;}cell = row.createCell(i);cell.setCellValue(title);cell.setCellStyle(style);}//创建隐藏⽬录createHideSheetHSSF(wb, provinceList, areaFatherNameList, areaMap);//如果省市区的excel位置不是如上tileList中的位置,需要变更则需要INDIRECT中所在的列名称// 省规则DVConstraint provConstraint = DVConstraint.createExplicitListConstraint(provinceList.toArray(new String[]{}));CellRangeAddressList provRangeAddressList = new CellRangeAddressList(1, XLS_MAX_ROW, provinceIndex, provinceIndex);DataValidation provinceDataValidation = new HSSFDataValidation(provRangeAddressList, provConstraint);provinceDataValidation.createErrorBox("error", "请选择正确的省份");sheet.addValidationData(provinceDataValidation);//市规则CellRangeAddressList cityRange = new CellRangeAddressList(1, XLS_MAX_ROW, provinceIndex + 1, provinceIndex + 1);DataValidation cityValidation = new HSSFDataValidation(cityRange, DVConstraint.createFormulaListConstraint("INDIRECT($C1)"));cityValidation.createErrorBox("error", "请选择正确的市");sheet.addValidationData(cityValidation);//区县规则CellRangeAddressList areaRange = new CellRangeAddressList(1, XLS_MAX_ROW, provinceIndex + 2, provinceIndex + 2);DataValidation areaValidation = new HSSFDataValidation(areaRange, DVConstraint.createFormulaListConstraint("INDIRECT($D1)"));areaValidation.createErrorBox("error", "请选择正确的县");sheet.addValidationData(areaValidation);//区县乡镇CellRangeAddressList townRange = new CellRangeAddressList(1, XLS_MAX_ROW, provinceIndex + 3, provinceIndex + 3);DataValidation townValidation = new HSSFDataValidation(townRange, DVConstraint.createFormulaListConstraint("INDIRECT($E1)"));townValidation.createErrorBox("error", "请选择正确的乡镇");sheet.addValidationData(townValidation);//村规则CellRangeAddressList villageRange = new CellRangeAddressList(1, XLS_MAX_ROW, provinceIndex + 4, provinceIndex + 4);DataValidation villageValidation = new HSSFDataValidation(villageRange, DVConstraint.createFormulaListConstraint("INDIRECT($F1)"));villageValidation.createErrorBox("error", "请选择正确的村");sheet.addValidationData(villageValidation);FileOutputStream fileOut;try {fileOut = new FileOutputStream("d://excel_template.xls");wb.write(fileOut);fileOut.close();} catch (Exception e) {e.printStackTrace();}}/*** 创建隐藏页** @param wb* @param provinceArr* @param areaFatherNameArr* @param areaMap*/public static void createHideSheetHSSF(HSSFWorkbook wb, List<String> provinceArr, List<String> areaFatherNameArr, Map<String, List<String>> areaMap) { //创建⼀个专门⽤来存放地区信息的隐藏sheet页HSSFSheet hideSheet = wb.createSheet("area");int rowId = 0;// 设置第1⾏,存省的信息Row provinceRow = hideSheet.createRow(rowId++);for (int i = 0; i < provinceArr.size(); i++) {Cell provinceCell = provinceRow.createCell(i);provinceCell.setCellValue(provinceArr.get(i));}// 将具体的数据写⼊到每⼀⾏中,⾏开头为⽗级区域,后⾯是⼦区域。
excel java 列操作的方法

excel java 列操作的方法在Java中与Excel进行交互是数据处理和报告生成中的一个常见需求。
Apache POI是一个流行的Java库,用于处理Microsoft Office文档,包括Excel。
本文将详细介绍几种使用Java对Excel中的列进行操作的方法。
### Excel列操作基础在进行列操作之前,需要确保你的项目中已经添加了Apache POI的依赖。
以下是一些基本的操作方法:#### 1.读取列数据```javaimport ermodel.*;public class ExcelColumnReader {public static void readColumnData(String excelFilePath, int sheetIndex, int columnIndex) throws IOException {try (FileInputStream fis = newFileInputStream(excelFilePath);Workbook workbook = WorkbookFactory.create(fis)) {Sheet sheet = workbook.getSheetAt(sheetIndex);for (Row row : sheet) {Cell cell = row.getCell(columnIndex);if (cell != null) {// 根据不同的数据类型处理单元格数据switch (cell.getCellType()) {case STRING:System.out.println(cell.getStringCellValue());break;case NUMERIC:System.out.println(cell.getNumericCellValue());break;// 其他类型处理...}}}}}}```#### 2.写入列数据```javaimport ermodel.*;public class ExcelColumnWriter {public static void writeColumnData(String excelFilePath, intsheetIndex, int columnIndex, String data) throws IOException {try (FileInputStream fis = newFileInputStream(excelFilePath);Workbook workbook = WorkbookFactory.create(fis);FileOutputStream fos = newFileOutputStream(excelFilePath)) {Sheet sheet = workbook.getSheetAt(sheetIndex);for (Row row : sheet) {Cell cell = row.createCell(columnIndex);cell.setCellValue(data);}workbook.write(fos);}}}```#### 3.删除列```javaimport ermodel.*;public class ExcelColumnDeleter {public static void deleteColumn(String excelFilePath, int sheetIndex, int columnIndex) throws IOException {try (FileInputStream fis = newFileInputStream(excelFilePath);Workbook workbook = WorkbookFactory.create(fis);FileOutputStream fos = newFileOutputStream(excelFilePath)) {Sheet sheet = workbook.getSheetAt(sheetIndex);for (Row row : sheet) {row.removeCell(row.getCell(columnIndex));}workbook.write(fos);}}}```### 高级列操作除了基本的读取、写入和删除操作外,以下是一些更高级的列操作方法:#### 1.复制列```java// 此处省略具体代码,因为复制列涉及到位操作和单元格样式复制等复杂操作```#### 2.遍历列并应用公式```javaimport ermodel.*;public class ExcelColumnFormulaApplier {public static void applyFormula(String excelFilePath, int sheetIndex, int columnIndex, String formula) throws IOException { try (FileInputStream fis = newFileInputStream(excelFilePath);Workbook workbook = WorkbookFactory.create(fis);FileOutputStream fos = newFileOutputStream(excelFilePath)) {Sheet sheet = workbook.getSheetAt(sheetIndex);for (Row row : sheet) {Cell cell = row.createCell(columnIndex);cell.setCellFormula(formula);}workbook.write(fos);}}}```#### 3.格式化列```java// 格式化列涉及到创建单元格样式,并对列中的所有单元格应用这个样式```### 结论使用Java对Excel进行列操作是一个强大且灵活的过程,可以满足各种数据处理需求。
练习21下拉式列表框

练习21 下拉式列表框本例知识点一句话讲解新学知识使用JComboBox类制作下拉式列表框使用Container类制作容器已学知识使用String类定义字符串数组使用JLabel类制作静态标签一、练习具体要求本练习制作下拉式列表框的实例。
如图21-1所示,程序执行后,创建一个查看商品内容的面板,用户可以通过鼠标来选择要查看的商品信息。
选中之后,面板将会显示该种商品的价格和库存情况。
二、程序及注释(1)编程思路:首先,本练习因为要制作下拉式列表框的实例,所以首先要生成下拉式列表框:先通过Container ctp=getContentPane()生成一个容器类对象,然后通过语句JComboBox cbx=new JComboBox()生成一个下拉式列表框的实例,最后通过函数ctp.add(cbx)将下拉式列表框加载。
然后,为了配合用户查看商品信息,所以要响应用户的动作,先通过语句cbx.addItemListener(this)为下拉式列表框添加消息监听,最后通过public void itemStateChanged(ItemEvent e)函数来响应用户操作,同步显示被选中商品的价格和库存数量。
(2)程序实现及注释://JComboBoxTest.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class JComboBoxTest extends JApplet implements ItemListener{//变量定义Container ctp=getContentPane();JTextField tf1=new JTextField(5),tf2=new JTextField(5);JLabel lb1=new JLabel("单价:"),lb2=new JLabel("库存量:");String obj[]={"大米","饮料","面粉","酱油","口香糖"},price[]={"12","118","29","24","47"}, num[]={"232","45","405","12","49"}; JComboBox cbx=new JComboBox();//初始化小程序public void init(){//设置页面布局风格ctp.setLayout(new FlowLayout());for (int n=0;n<obj.length;n++)cbx.addItem(obj[n]);ctp.add(cbx);//添加消息监听cbx.addItemListener(this);ctp.add(lb1);ctp.add(tf1);ctp.add(lb2);ctp.add(tf2);}//响应用户操作public void itemStateChanged(ItemEvent e) {int x=0,y;String ko=(String)e.getItem();for (y=0;y<obj.length;y++)if (ko==obj[y])x=cbx.getSelectedIndex();//设置价格tf1.setText(price[x]);//设置数量tf2.setText(num[x]);}}三、练习效果(如图21-1所示)本实例代码编写完毕,存盘为:C: j2sdk1.4.0\javaprograms\ JComboBoxTest.java。
Java生成Excel文件

Java生成Excel文件Java作为一种广泛应用的编程语言,提供了许多库和工具来生成和操作Excel 文件。
在本文中,我将详细介绍使用Java生成Excel文件的方法和技巧。
1. Apache POI库Apache POI是一个流行的Java库,用于处理Microsoft Office格式的文件,包括Excel。
它提供了一组API来创建、读取和修改Excel文件。
首先,您需要在项目中添加Apache POI的依赖。
可以通过Maven或手动下载jar文件来完成。
```xml<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency>```2. 创建Excel文件下面是一个简单的示例,展示了如何使用Apache POI创建一个包含数据的Excel文件。
```javaimport ermodel.*;import ermodel.XSSFWorkbook;public class ExcelGenerator {public static void main(String[] args) {Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Sheet1");// 创建标题行Row headerRow = sheet.createRow(0);Cell headerCell = headerRow.createCell(0);headerCell.setCellValue("姓名");headerCell = headerRow.createCell(1);headerCell.setCellValue("年龄");// 创建数据行Row dataRow = sheet.createRow(1);Cell dataCell = dataRow.createCell(0);dataCell.setCellValue("张三");dataCell = dataRow.createCell(1);dataCell.setCellValue(25);// 保存Excel文件try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) { workbook.write(outputStream);} catch (IOException e) {e.printStackTrace();}}}```上述代码创建了一个包含姓名和年龄的Excel文件。
javapoi导出excel设置下拉选择框

javapoi导出excel设置下拉选择框基本的过程就是设置⼀个下拉选择框的校验,然后绑定到sheet的指定格⼦上。
XSS和HSS的⽅式有些许不同,但是原理是⼀样的。
代码⽰例如下://性别String[] datas = new String[]{"男","⼥"};if(excelType.equals(ExcelTypeEnum.XLSX)){//数据验证帮助程序XSSFDataValidationHelper dvHelper2 = new XSSFDataValidationHelper((XSSFSheet) sheet);XSSFDataValidationConstraint dvConstraint2 = (XSSFDataValidationConstraint) dvHelper2.createExplicitListConstraint(datas);CellRangeAddressList regions2 =new CellRangeAddressList(1, 5000, 2, 2);XSSFDataValidation dataValidation2 = (XSSFDataValidation) dvHelper2.createValidation( dvConstraint2, regions2);sheet.addValidationData(dataValidation2);}else{//性别// 设置第5列的2-5000⾏为下拉列表CellRangeAddressList regions2 = new CellRangeAddressList(1, 5000, 2, 2);// 创建下拉列表数据DVConstraint constraint2 = DVConstraint.createExplicitListConstraint(datas);// 绑定HSSFDataValidation dataValidation2 = new HSSFDataValidation(regions2, constraint2);sheet.addValidationData(dataValidation2);}------------完整的⼀个⽰例代码如下。
Java使用POI操作Excel并创建下拉框

Java使用POI操作Excel并创建下拉框Java代码package poiexcel;import java.io.FileOutputStream;import java.util.Date;import ermodel.DVConstraint;import ermodel.HSSFCell;import ermodel.HSSFDataValidation;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;import org.apache.poi.hssf.util.CellRangeAddressList;public class POI{public static void main(String [] args){String [] list={"东软","华信","SAP","海辉"};new POI().createListBox(list);return;}public void createListBox (String [] list){//文件初始化HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet("new sheet");//在第一行第一个单元格,插入下拉框HSSFRow row = sheet.createRow(0);HSSFCell cell = row.createCell(0);//普通写入操作cell.setCellValue("请选择");//这是实验//生成下拉列表//只对(0,0)单元格有效CellRangeAddressList regions = new CellRangeAddressList(0,0,0,0);//生成下拉框内容DVConstraint constraint = DVConstraint.createExplicitListConstraint(list);//绑定下拉框和作用区域HSSFDataValidation data_validation = new HSSFDataValidation(regions,constraint); //对sheet页生效sheet.addValidationData(data_validation);//写入文件FileOutputStream fileOut;try {fileOut = new FileOutputStream("workbook.xls");wb.write(fileOut);fileOut.close();} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}//结束System.out.println("Over");}}。
java动态生成带下拉框的Excel导入模板

java动态⽣成带下拉框的Excel导⼊模板在实际开发中,由于业务需要,常常需要进⾏Excel导⼊导出操作。
以前做⼀些简单的导⼊时,先准备⼀个模板,再进⾏导⼊,单有⼗⼏、⼆⼗⼏个导⼊模板时,往往要做⼗⼏、⼆⼗⼏个模板。
⽽且,当在模板中需要有下拉框,⽽且下拉数据要实时查询时,这样的⽅法就不太好了;现在,做成了动态⽣成导⼊模板,只要参数传对了,就可以⽣成任何我们想要的导⼊模板,⽽且随意设置下拉框的数⽬、位置。
具体步骤如下:1、需要⽤到的jar包:poi-3.10-FINAL.jarpoi-ooxml-3.10-FINAL.jarpoi-ooxml-schemas-3.10-FINAL.jargradle引⼊:compile group: 'org.apache.poi', name: 'poi', version: '3.10'compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.10-FINAL'2、⽣成Excel导⼊模板 :/*** @Title: createExcelTemplate* @Description: ⽣成Excel导⼊模板* @param@param filePath Excel⽂件路径* @param@param handers Excel列标题(数组)* @param@param downData 下拉框数据(数组)* @param@param downRows 下拉列的序号(数组,序号从0开始)* @return void* @throws*/private static void createExcelTemplate(String filePath, String[] handers,List<String[]> downData, String[] downRows){HSSFWorkbook wb = new HSSFWorkbook();//创建⼯作薄//表头样式HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建⼀个居中格式//字体样式HSSFFont fontStyle = wb.createFont();fontStyle.setFontName("微软雅⿊");fontStyle.setFontHeightInPoints((short)12);fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);style.setFont(fontStyle);//新建sheetHSSFSheet sheet1 = wb.createSheet("Sheet1");HSSFSheet sheet2 = wb.createSheet("Sheet2");HSSFSheet sheet3 = wb.createSheet("Sheet3");//⽣成sheet1内容HSSFRow rowFirst = sheet1.createRow(0);//第⼀个sheet的第⼀⾏为标题//写标题for(int i=0;i<handers.length;i++){HSSFCell cell = rowFirst.createCell(i); //获取第⼀⾏的每个单元格sheet1.setColumnWidth(i, 4000); //设置每列的列宽cell.setCellStyle(style); //加样式cell.setCellValue(handers[i]); //往单元格⾥写数据}//设置下拉框数据String[] arr = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};int index = 0;HSSFRow row = null;for(int r=0;r<downRows.length;r++){String[] dlData = downData.get(r);//获取下拉对象int rownum = Integer.parseInt(downRows[r]);if(dlData.length<5){ //255以内的下拉//255以内的下拉,参数分别是:作⽤的sheet、下拉内容数组、起始⾏、终⽌⾏、起始列、终⽌列sheet1.addValidationData(setDataValidation(sheet1, dlData, 1, 50000, rownum ,rownum)); //超过255个报错} else { //255以上的下拉,即下拉列表元素很多的情况//1、设置有效性//String strFormula = "Sheet2!$A$1:$A$5000" ; //Sheet2第A1到A5000作为下拉列表来源数据String strFormula = "Sheet2!$"+arr[index]+"$1:$"+arr[index]+"$5000"; //Sheet2第A1到A5000作为下拉列表来源数据sheet2.setColumnWidth(r, 4000); //设置每列的列宽//设置数据有效性加载在哪个单元格上,参数分别是:从sheet2获取A1到A5000作为⼀个下拉的数据、起始⾏、终⽌⾏、起始列、终⽌列 sheet1.addValidationData(SetDataValidation(strFormula, 1, 50000, rownum, rownum)); //下拉列表元素很多的情况//2、⽣成sheet2内容for(int j=0;j<dlData.length;j++){if(index==0){ //第1个下拉选项,直接创建⾏、列row = sheet2.createRow(j); //创建数据⾏sheet2.setColumnWidth(j, 4000); //设置每列的列宽row.createCell(0).setCellValue(dlData[j]); //设置对应单元格的值} else { //⾮第1个下拉选项int rowCount = sheet2.getLastRowNum();//System.out.println("========== LastRowNum =========" + rowCount);if(j<=rowCount){ //前⾯创建过的⾏,直接获取⾏,创建列//获取⾏,创建列sheet2.getRow(j).createCell(index).setCellValue(dlData[j]); //设置对应单元格的值} else { //未创建过的⾏,直接创建⾏、创建列sheet2.setColumnWidth(j, 4000); //设置每列的列宽//创建⾏、创建列sheet2.createRow(j).createCell(index).setCellValue(dlData[j]); //设置对应单元格的值}}}index++;}}try {File f = new File(filePath); //写⽂件//不存在则新增if(!f.getParentFile().exists()){f.getParentFile().mkdirs();}if(!f.exists()){f.createNewFile();}FileOutputStream out = new FileOutputStream(f);out.flush();wb.write(out);out.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}3、设置有效性:/**** @Title: SetDataValidation* @Description: 下拉列表元素很多的情况 (255以上的下拉)* @param@param strFormula* @param@param firstRow 起始⾏* @param@param endRow 终⽌⾏* @param@param firstCol 起始列* @param@param endCol 终⽌列* @param@return* @return HSSFDataValidation* @throws*/private static HSSFDataValidation SetDataValidation(String strFormula,int firstRow, int endRow, int firstCol, int endCol) {// 设置数据有效性加载在哪个单元格上。
jxl创建下拉列表

xl创建下拉框2010-05-05 17:32:41| 分类:jxl|字号订阅import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import jxl.Workbook;import bel;import jxl.write.WritableCellFeatures;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;public class jxlLabel {public static void main(String arg[]) throws IOException, RowsExceededException, WriteException{WritableWorkbook book = Workbook.createWorkbook(new File("c:/test.xls"));WritableSheet sheet = book.createSheet("test", 0);List angerlist = new ArrayList();angerlist.add("是");angerlist.add("否");Label norFormat = null;norFormat = new Label(0, 0, "请选择");WritableCellFeatures ws = new WritableCellFeatures();ws.setDataValidationList(angerlist);norFormat.setCellFeatures(ws);sheet.addCell(norFormat);book.write();book.close();}}jxl创建excel代码(含各种数据样式下拉框)(2012-01-11 12:06:53)转载▼标签:分类:Javajavajxlexcel下拉框itimport java.io.FileOutputStream;import java.io.OutputStream;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import jxl.Workbook;import jxl.format.Alignment;import jxl.format.Border;import jxl.format.BorderLineStyle;import jxl.format.CellFormat;import bel;import jxl.write.WritableCellFeatures;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class JXLExample {public static void main(String[] args) {// 准备设置excel工作表的标题String[] title = { "编号", "产品名称", "产品价格", "产品数量", "生产日期", "产地", "是否出口" };try {// 获得开始时间long start = System.currentTimeMillis();// 输出的excel的路径String filePath = "c:\\test.xls";// 创建Excel工作薄WritableWorkbook wwb;// 新建立一个jxl文件,即在C盘下生成test.xlsOutputStream os = new FileOutputStream(filePath);wwb = Workbook.createWorkbook(os);// 添加第一个工作表并设置第一个Sheet的名字WritableSheet sheet = wwb.createSheet("产品清单", 0);Label label;for (int i = 0; i < title.length; i++) {label = new Label(i, 0, title[i]);// 将定义好的单元格添加到工作表中sheet.addCell(label);}// WritableSheet.setRowView(int i,int height); 指定第i+1行的高度 // WritableSheet.setColumnView(int i,int width); 指定第i+1列的宽度// 填充产品编号jxl.write.Number number = new jxl.write.Number(0, 1, 20071001);sheet.addCell(number);// 填充产品名称label = new Label(1, 1, "金鸽瓜子");sheet.addCell(label);jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat( nf);// 填充产品价格jxl.write.Number nb = new jxl.write.Number(2, 1, 2.45, wcf);sheet.addCell(nb);// 填充产品数量jxl.write.Number numb = new jxl.write.Number(3, 1, 200);sheet.addCell(numb);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String newdate = sdf.format(new Date());// 填充出产日期label = new Label(4, 1, newdate);sheet.addCell(label);// 填充产地label = new Label(5, 1, "陕西西安");sheet.addCell(label);jxl.write.Boolean bool = new jxl.write.Boolean(6, 1, true);sheet.addCell(bool);sheet.mergeCells(0, 3, 2, 3);label = new Label(0, 3, "合并了三个单元格");sheet.addCell(label);CellFormat cf = wwb.getSheet(0).getCell(1, 0).getCellFormat();WritableCellFormat wc = new WritableCellFormat();// 设置居中wc.setAlignment(Alignment.CENTRE);// 设置边框线wc.setBorder(Border.ALL, BorderLineStyle.THIN);// 设置单元格的背景颜色wc.setBackground(jxl.format.Colour.RED);label = new Label(1, 5, "字体", wc);sheet.addCell(label);// 设置字体WritableFont wfont = new WritableFont(WritableFont.createFont("隶书"), 20);WritableCellFormat font = new WritableCellFormat(wfont);label = new Label(2, 6, "隶书", font);sheet.addCell(label);label = new Label(0, 4, "");WritableCellFeatures wcf1 = new WritableCellFeatures();List<String> angerlist = new ArrayList<String>();angerlist.add("电话");angerlist.add("手机");angerlist.add("呼机");wcf1.setDataValidationList(angerlist);label.setCellFeatures(wcf1);sheet.addCell(label);for (int i = 8; i < 500; i++) {WritableCellFeatures wcf2 = new WritableCellFeatures();wcf2.setDataValidationList(angerlist);label = new Label(0, i, "");label.setCellFeatures(wcf2);sheet.addCell(label);}// 写入数据wwb.write();// 关闭文件wwb.close();long end = System.currentTimeMillis();System.out.println("----完成该操作共用的时间是:" + (end - start)+"ms"); } catch (Exception e) {System.out.println("---出现异常---");e.printStackTrace();}使用JXL创建带下拉列表的单元格(2010-02-21 17:22:06)转载▼标签:分类:技术jxlexceljavaitWritableWorkbook book = Workbook.createWorkbook(new File("D:/test.xls")); WritableSheet sheet = book.createSheet("test", 0);List angerlist = new ArrayList();angerlist.add("是");angerlist.add("否");Label norFormat = null;norFormat = new Label(0, 0, "请选择");WritableCellFeatures ws = new WritableCellFeatures();ws.setDataValidationList(angerlist);norFormat.setCellFeatures(ws);sheet.addCell(norFormat);book.write();book.close();WritableWorkbook book = Workbook.createWorkbook(new File("D:/test.xls")); WritableSheet sheet = book.createSheet("test", 0);List angerlist = new ArrayList();angerlist.add("是");angerlist.add("否");Label norFormat = null;norFormat = new Label(0, 0, "请选择");WritableCellFeatures ws = new WritableCellFeatures();ws.setDataValidationList(angerlist);norFormat.setCellFeatures(ws);sheet.addCell(norFormat);book.write();book.close();头段时间要做个excel导出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
package wstar.wwwrot.util;import java.io.FileOutputStream;import java.util.HashMap;import ermodel.Row;import ermodel.*;import ermodel.*;import org.apache.poi.ss.util.CellRangeAddressList;public class CreateExcelMoBusiness {private static String EXCEL_HIDE_SHEET_NAME = "excelhidesheetname"; private static String HIDE_SHEET_NAME_PROVINCE = "provinceList";private HashMap map = new HashMap();//设置下拉列表的内容private static String[] provinceList = {"浙江","山东"};public static void main(String[] args) {//使用事例Workbook wb = new HSSFWorkbook();createExcelMo(wb);creatExcelHidePage(wb);setDataValidation(wb);FileOutputStream fileOut;try {fileOut = new FileOutputStream("d://test1.xls");wb.write(fileOut);fileOut.close();} catch (Exception e) {e.printStackTrace();}}public static void createExcelMo(Workbook wb){Sheet sheet = wb.createSheet("用户分类添加批导");// Create a row and put some cells in it. Rows are 0 based.Row row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("手机号码");cell = row.createCell(1);cell.setCellValue("所属父类");}/*** 设置模板文件的横向表头单元格的样式* @param wb* @return*/public static void creatExcelHidePage(Workbook workbook){ Sheet hideInfoSheet =workbook.createSheet(EXCEL_HIDE_SHEET_NAME);//隐藏一些信息//在隐藏页设置选择信息//第二行设置省份名称列表Row provinceNameRow = hideInfoSheet.createRow(1);creatRow(provinceNameRow, provinceList);//第二行设置省份名称列表creatExcelNameList(workbook, HIDE_SHEET_NAME_PROVINCE, 2, provinceList.length, false);//设置隐藏页标志workbook.setSheetHidden(workbook.getSheetIndex(EXCEL_HIDE_SHEET_N AME), true);}/*** 创建一个名称* @param workbook*/private static void creatExcelNameList(Workbook workbook,String nameCode,int order,int size,boolean cascadeFlag){Name name;name = workbook.createName();name.setNameName(nameCode);name.setRefersToFormula(EXCEL_HIDE_SHEET_NAME+"!"+creatExcelName List(order,size,cascadeFlag));}/*** 名称数据行列计算表达式* @param workbook*/private static String creatExcelNameList(int order,int size,boolean cascadeFlag){char start = 'A';if(cascadeFlag){start = 'B';if(size<=25){char end = (char)(start+size-1);return "$"+start+"$"+order+":$"+end+"$"+order;}else{char endPrefix = 'A';char endSuffix = 'A';if((size-25)/26==0||size==51){//26-51之间,包括边界(仅两次字母表计算)if((size-25)%26==0){//边界值endSuffix = (char)('A'+25);}else{endSuffix = (char)('A'+(size-25)%26-1);}}else{//51以上if((size-25)%26==0){endSuffix = (char)('A'+25);endPrefix = (char)(endPrefix + (size-25)/26 - 1);}else{endSuffix = (char)('A'+(size-25)%26-1);endPrefix = (char)(endPrefix + (size-25)/26);}}return"$"+start+"$"+order+":$"+endPrefix+endSuffix+"$"+order;}}else{if(size<=26){char end = (char)(start+size-1);return "$"+start+"$"+order+":$"+end+"$"+order;}else{char endPrefix = 'A';char endSuffix = 'A';if(size%26==0){endSuffix = (char)('A'+25);if(size>52&&size/26>0){endPrefix = (char)(endPrefix + size/26-2);}}else{endSuffix = (char)('A'+size%26-1);if(size>52&&size/26>0){endPrefix = (char)(endPrefix + size/26-1);}}return "$"+start+"$"+order+":$"+endPrefix+endSuffix+"$"+order; }}}/*** 创建一列数据* @param currentRow* @param textList*/private static void creatRow(Row currentRow,String[] textList){if(textList!=null&&textList.length>0){int i = 0;for(String cellValue : textList){Cell userNameLableCell = currentRow.createCell(i++);userNameLableCell.setCellValue(cellValue);}}}/*** 添加数据验证选项* @param sheet*/public static void setDataValidation(Workbook wb){int sheetIndex = wb.getNumberOfSheets();if(sheetIndex>0){for(int i=0;i<sheetIndex;i++){Sheet sheet = wb.getSheetAt(i);if(!EXCEL_HIDE_SHEET_NAME.equals(sheet.getSheetName())){DataValidation data_validation_list = null;//省份选项添加验证数据for(int a=2;a<3002;a++){data_validation_list =getDataValidationByFormula(HIDE_SHEET_NAME_PROVINCE,a,2);sheet.addValidationData(data_validation_list);}}}}}/*** 使用已定义的数据源方式设置一个数据验证* @param formulaString* @param naturalRowIndex* @param naturalColumnIndex* @return*/private static DataValidation getDataValidationByFormula(String formulaString,int naturalRowIndex,int naturalColumnIndex){//加载下拉列表内容DVConstraint constraint =DVConstraint.createFormulaListConstraint(formulaString);//设置数据有效性加载在哪个单元格上。