- 浏览: 127471 次
- 性别:
-
文章分类
- 全部博客 (390)
- java开发 (0)
- Struts2框架 (0)
- Spring3框架 (0)
- Spring4框架 (0)
- Hibernate3框架 (0)
- Hibernate4框架 (0)
- jQuery前台技术 (0)
- ExtJs3前台技术 (2)
- ExtJs4前台技术 (0)
- javascript脚本语言 (0)
- Oracle数据库 (0)
- MySQL数据库 (0)
- SQL Server数据库 (0)
- JSTL与EL (0)
- Ajax技术 (0)
- DWR技术 (0)
- Ibatis技术 (0)
- Mybatis技术 (0)
- JBPM工作流 (0)
- xstream技术 (0)
- 框架整合技术 (0)
最新评论
生成和解析excel文件
jxl.jar:下载地址:http://download.csdn.net/detail/xuxu198899223/7717737
package excel; public class BookVO { public String bookName; public String bookAuthor; public String bookPrice; public String bookConcern; public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getBookAuthor() { return bookAuthor; } public void setBookAuthor(String bookAuthor) { this.bookAuthor = bookAuthor; } public String getBookPrice() { return bookPrice; } public void setBookPrice(String bookPrice) { this.bookPrice = bookPrice; } public String getBookConcern() { return bookConcern; } public void setBookConcern(String bookConcern) { this.bookConcern = bookConcern; } }
2、生成excel文件:
package excel; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableImage; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * 生成excel文件 * @author lizhiyong * @version $Id: ExcelOpt.java, v 0.1 2014年8月5日 上午11:43:27 Exp $ */ public class ExcelOpt { /** * 生成一个Excel文件 jxl * @param fileName 要生成的Excel文件名 * @jxl.jar 版本:2.6 */ public static void writeExcel(String fileName) { WritableWorkbook wwb = null; try { //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 wwb = Workbook.createWorkbook(new File(fileName)); } catch (IOException e) { e.printStackTrace(); } if (wwb != null) { //创建一个可写入的工作表 //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置 WritableSheet ws = wwb.createSheet("工作表名称", 0); //下面开始添加单元格 for (int i = 0; i < 10; i++) { for (int j = 0; j < 5; j++) { //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行 Label labelC = new Label(j, i, "这是第" + (i + 1) + "行,第" + (j + 1) + "列"); try { //将生成的单元格添加到工作表中 ws.addCell(labelC); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } } try { //从内存中写入文件中 wwb.write(); //关闭资源,释放内存 wwb.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } } /** * 生成一个Excel文件POI * @param inputFile 输入模板文件路径 * @param outputFile 输入文件存放于服务器路径 * @param dataList 待导出数据 * @throws Exception * @roseuid: */ @SuppressWarnings({ "rawtypes", "deprecation" }) public static void exportExcelFile(String inputFile, String outputFile, List dataList) throws Exception { //用模板文件构造poi POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile)); //创建模板工作表 HSSFWorkbook templatewb = new HSSFWorkbook(fs); //直接取模板第一个sheet对象 HSSFSheet templateSheet = templatewb.getSheetAt(1); //得到模板的第一个sheet的第一行对象 为了得到模板样式 HSSFRow templateRow = templateSheet.getRow(0); //HSSFSheet timplateSheet = templatewb.getSheetAt(1); //取得Excel文件的总列数 int columns = templateSheet.getRow((short) 0).getPhysicalNumberOfCells(); // Debug.println("columns is : " + columns); //========================= //创建样式数组 HSSFCellStyle styleArray[] = new HSSFCellStyle[columns]; //一次性创建所有列的样式放在数组里 for (int s = 0; s < columns; s++) { //得到数组实例 styleArray[s] = templatewb.createCellStyle(); } //循环对每一个单元格进行赋值 //定位行 for (int rowId = 1; rowId < dataList.size(); rowId++) { //依次取第rowId行数据 每一个数据是valueList List valueList = (List) dataList.get(rowId - 1); //定位列 for (int columnId = 0; columnId < columns; columnId++) { //依次取出对应与colunmId列的值 //每一个单元格的值 String dataValue = (String) valueList.get(columnId); //取出colunmId列的的style //模板每一列的样式 HSSFCellStyle style = styleArray[columnId]; //取模板第colunmId列的单元格对象 //模板单元格对象 HSSFCell templateCell = templateRow.getCell((short) columnId); //创建一个新的rowId行 行对象 //新建的行对象 HSSFRow hssfRow = templateSheet.createRow(rowId); //创建新的rowId行 columnId列 单元格对象 //新建的单元格对象 HSSFCell cell = hssfRow.createCell((short) columnId); //如果对应的模板单元格 样式为非锁定 if (templateCell.getCellStyle().getLocked() == false) { //设置此列style为非锁定 style.setLocked(false); //设置到新的单元格上 cell.setCellStyle(style); } //否则样式为锁定 else { //设置此列style为锁定 style.setLocked(true); //设置到新单元格上 cell.setCellStyle(style); } //设置编码 cell.setEncoding(HSSFCell.ENCODING_UTF_16); //Debug.println("dataValue : " + dataValue); //设置值 统一为String cell.setCellValue(dataValue); } } //设置输入流 FileOutputStream fOut = new FileOutputStream(outputFile); //将模板的内容写到输出文件上 templatewb.write(fOut); fOut.flush(); //操作结束,关闭文件 fOut.close(); } /** * 生成数据为XLS格式 * @param filePath 生成Excel文件Path * @param dataList 要导入的数据 */ @SuppressWarnings("rawtypes") public static void writeExcelBo(String filePath, List dataList) { WritableWorkbook wwb = null; try { wwb = Workbook.createWorkbook(new File(filePath)); WritableSheet ws = wwb.createSheet("上市新书", 10); ws.addCell(new jxl.write.Label(0, 1, "书名")); ws.addCell(new jxl.write.Label(1, 1, "作者")); ws.addCell(new jxl.write.Label(2, 1, "定价")); ws.addCell(new jxl.write.Label(3, 1, "出版社")); int bookSize = dataList.size(); BookVO book = new BookVO(); for (int i = 0; i < bookSize; i++) { book = (BookVO) dataList.get(i); ws.addCell(new jxl.write.Label(0, i + 2, "" + book.getBookName())); ws.addCell(new jxl.write.Label(1, i + 2, book.getBookAuthor())); ws.addCell(new jxl.write.Label(2, i + 2, "" + book.getBookPrice())); ws.addCell(new jxl.write.Label(3, i + 2, book.getBookConcern())); } // jxl.write.WritableFont wfc= //new jxl.write.WritableFont(WritableFont.ARIAL,255,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); //jxl.write.WritableCellFormat wcfFC= new jxl.write.WritableCellFormat(wfc); ws.addCell(new jxl.write.Label(0, 0, "2007年07月即将上市新书!")); wwb.write(); // 关闭Excel工作薄对象 wwb.close(); } catch (IOException e) { } catch (RowsExceededException e) { } catch (WriteException e) { } } /**往Excel中插入图片 * @param dataSheet 待插入的工作表 * @param col 图片从该列开始 * @param row 图片从该行开始 * @param width 图片所占的列数 * @param height 图片所占的行数 * @param imgFile 要插入的图片文件 */ public static void insertImg(WritableSheet dataSheet, int col, int row, int width, int height, File imgFile) { WritableImage img = new WritableImage(col, row, width, height, imgFile); dataSheet.addImage(img); } /** * 往Excel中插入图片 * @param file * @throws IOException * @throws WriteException */ public static boolean insertImg(String filePath,String imgPath) throws IOException, WriteException { try { //创建一个工作薄 WritableWorkbook workbook = Workbook.createWorkbook(new File(filePath)); //待插入的工作表 WritableSheet imgSheet = workbook.createSheet("Images", 0); //要插入的图片文件 File imgFile = new File(imgPath); //图片插入到第二行第一个单元格,长宽各占六个单元格 insertImg(imgSheet, 0, 1, 6, 6, imgFile); workbook.write(); workbook.close(); return true; } catch (IOException e) { throw e; } catch (WriteException e) { throw e; } } @SuppressWarnings({ "rawtypes", "unchecked" }) public static void main(String[] args) throws WriteException, IOException { writeExcel("c:\\Test测试Excel.xls"); System.out.println("OK"); ArrayList list = new ArrayList(); for (int i = 0; i < 10; i++) { BookVO book = new BookVO(); book.setBookName("WebWork in action+" + i); book.setBookAuthor("李四+" + i); book.setBookPrice("39元+" + i); book.setBookConcern("飞思科技+" + i); list.add(book); } writeExcelBo("c:\\上市新书.xls", list); System.err.println("Book OK!!!"); //System.out.println(insertImg("c:\\上市新书.xls","C:\\2.png")); } }
3、解析excel文件:
package excel; import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; /** * 解析excel文件 * @author lizhiyong * @version $Id: ReadExcel.java, v 0.1 2014年8月5日 上午11:43:44 Exp $ */ public class ReadExcel { /**读取Excel文件的内容 * @param file 待读取的文件 * @return */ public static String readExcel(File file) { StringBuffer sb = new StringBuffer(); Workbook wb = null; try { //构造Workbook(工作薄)对象 wb = Workbook.getWorkbook(file); } catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if (wb == null) return null; //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了 Sheet[] sheet = wb.getSheets(); if (sheet != null && sheet.length > 0) { //对每个工作表进行循环 for (int i = 0; i < sheet.length; i++) { //得到当前工作表的行数 int rowNum = sheet[i].getRows(); for (int j = 0; j < rowNum; j++) { //得到当前行的所有单元格 Cell[] cells = sheet[i].getRow(j); if (cells != null && cells.length > 0) { //对每个单元格进行循环 for (int k = 0; k < cells.length; k++) { //读取当前单元格的值 String cellValue = cells[k].getContents(); sb.append(cellValue + "\t"); } } sb.append("\r\n"); } sb.append("\r\n"); } } //最后关闭资源,释放内存 wb.close(); return sb.toString(); } /**搜索某一个文件中是否包含某个关键字 * @param file 待搜索的文件 * @param keyWord 要搜索的关键字 * @return */ public static boolean searchKeyWord(File file, String keyWord) { boolean res = false; Workbook wb = null; try { //构造Workbook(工作薄)对象 wb = Workbook.getWorkbook(file); } catch (BiffException e) { return res; } catch (IOException e) { return res; } if (wb == null) { return res; } //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了 Sheet[] sheet = wb.getSheets(); boolean breakSheet = false; if (sheet != null && sheet.length > 0) { //对每个工作表进行循环 for (int i = 0; i < sheet.length; i++) { if (breakSheet) { break; } //得到当前工作表的行数 int rowNum = sheet[i].getRows(); boolean breakRow = false; for (int j = 0; j < rowNum; j++) { if (breakRow) { break; } //得到当前行的所有单元格 Cell[] cells = sheet[i].getRow(j); if (cells != null && cells.length > 0) { boolean breakCell = false; //对每个单元格进行循环 for (int k = 0; k < cells.length; k++) { if (breakCell) { break; } //读取当前单元格的值 String cellValue = cells[k].getContents(); if (cellValue == null) { continue; } if (cellValue.contains(keyWord)) { res = true; breakCell = true; breakRow = true; breakSheet = true; } } } } } } //最后关闭资源,释放内存 wb.close(); return res; } public static void main(String[] a) { String filePath = "c:\\上市新书.xls"; File file = new File(filePath); System.out.println(readExcel(file)); System.out.println(searchKeyWord(file,"出版社32")); } }
相关推荐
以上就是使用Java POI库生成和解析Excel文件的基本操作。在实际应用中,你可以根据需求进行更复杂的操作,如处理公式、图表、数据验证等。记得在操作完成后始终关闭工作簿和输入/输出流,以释放资源。此外,对于大型...
### 生成和下载Excel文件知识点解析 在当前的软件开发领域中,经常需要将数据库中的数据导出为Excel文件,并提供给用户下载的功能。本文将详细介绍如何使用C#结合ADO.NET来实现这一功能,包括创建Excel文件、填充...
标题"qt解析excel直接生成ts文件"涉及到的技术点主要有三个:Qt、XML解析以及多语言资源管理。这个过程通常是为了简化多语言支持的更新和维护,尤其是在有大量字符串需要翻译的情况下。 首先,Qt库提供了丰富的功能...
在Java编程环境中,生成和解析Excel文件是一项常见的任务,尤其在数据分析、报表生成或数据导入导出场景下。为了实现这个功能,开发者通常会依赖一些第三方库,如Apache POI项目提供的API。以下是对给定标题和描述中...
本主题聚焦于如何使用C#来生成和读取Excel文件,这在数据处理和报告生成等领域非常常见。Excel文件(.xlsx)通常采用Microsoft Office的Open XML格式,这种格式允许开发者使用XML解析器或特定库来操作文件内容。 ...
实例一:解析Excel文件 使用Apache POI库是Java中解析Excel文件的常见方式。POI提供了HSSF(旧版Excel .xls格式)和XSSF(新版本Excel .xlsx格式)API。以下是一个简单的读取Excel文件的例子: 1. 引入Apache POI库...
在Java编程中,解析Excel文件是一项常见的任务,尤其在数据处理、数据分析或报表生成等场景中。本实例将深入探讨如何使用Java来读取和解析Excel文件,主要涉及的工具有Apache POI库,它是一个强大的API,允许我们与...
本主题将详细探讨如何使用Java的Apache POI库读取Excel文件,并利用JDOM库生成XML文件。 首先,Apache POI是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。在Java中,我们可以...
此外,POI 还支持读取和写入 PowerPoint 和 Word 文件,不过这些不在这个“POI 生成、解析excel,demo”的标签范围内。 对于提供的“poi-3.8”压缩包,这应该是 Apache POI 的一个旧版本。尽管较新的版本可能包含更...
Perl是一种强大的脚本编程语言,尤其在文本处理和系统管理任务方面表现突出。...总的来说,使用Perl解析Excel文件是一项常见的任务,通过利用Perl的强大功能和丰富的生态系统,可以高效地完成数据提取和处理工作。
详情:可以通过客户给的Excel矩阵表通过配置生成LDF文件和位定义文件,也可以通过客户给的LDF文件生成Excel矩阵表和位定义文件, 附件里有demo模板,可自己创建配置ini文件。 具体使用说明:...
Java解析Excel文件是Java开发中常见的任务,尤其在数据处理、报表生成或数据分析等领域。Excel文件通常使用两种主要格式:老式的`.xls`(BIFF8格式)和较新的`.xlsx`(OOXML格式)。本示例关注的是`.xls`格式,因为...
在上传并解析Excel文件后,我们可能需要将数据存储到数据库或进行进一步的数据处理。例如,可以遍历每个`Row`,获取`Cell`的值,然后根据业务逻辑进行处理。如果需要下载Excel,SpringMVC也提供了便捷的方式。可以...
非常好的一个Excel解析库 里面提供了样例, 双击exe就可以看到效果. rar文件中的代码路径: libxl-3.1\libxl-3.1\libxl-3.1.0\examples\c++\vs2010\extract 更新了以下的版本: 结合: ...
本文将详细探讨如何使用纯JavaScript在前端解析Excel文件,不依赖后端服务,且兼容各大主流浏览器。我们将主要关注以下几个关键知识点: 1. **Excel文件格式**: Excel文件通常以`.xlsx`为扩展名,采用OpenXML标准...
1. Excel文件读取:解析Excel文件的行和列,识别数据类型和字段名。 2. Java Bean模板生成:根据Excel数据结构,自动生成符合命名规范的Java Bean类。 3. 注释添加:为生成的Java Bean类添加字段注释,方便理解每个...
POI解析excel2007和生成excel2007.pdf Apache POI 是一个开源的 Java 库,用于读取和写入各种 Microsoft Office 文件格式,包括 Excel、Word、PowerPoint 等。今天,我们将讨论如何使用 Apache POI 来解析 excel...
Java解析Excel文件是Java开发中常见的任务,尤其是在处理数据导入导出、数据分析或者报表生成时。JXL库是一个广泛使用的Java库,它允许开发者读取、写入和修改Excel文件。在Java中,JXL.jar库提供了一种简单且高效的...
接下来,我们可以创建一个Java类,用于解析Excel文件。首先,我们需要创建一个`FileInputStream`对象来读取Excel文件,然后使用`WorkbookFactory.create()`方法创建一个`Workbook`对象,它是Excel文件的容器。例如:...
1. **解析Excel文件**: - Java中处理Excel文件主要使用Apache POI库。POI是Apache软件基金会的开放源代码项目,提供了API来读写Microsoft Office格式的文件,包括Excel。 - 使用POI,我们可以创建`HSSFWorkbook`...