java excl API
java获取excel文件内容的方法

一、介绍在开发过程中,我们经常会遇到需要读取Excel文件内容的情况。
而Java作为一种广泛应用的编程语言,具有丰富的库和功能,使得它成为一种很好的选择。
本文将介绍如何使用Java来获取Excel文件的内容,并将分为以下几个部分来进行讲解。
二、使用POI库进行Excel文件操作POI(Poor Obfuscation Implementation)是Apache基金会的一个开源项目,它为Java程序提供了读取和写入Microsoft Office格式文件的功能。
具体来说,POI库中的HSSF模块可以用于读取和操作Excel文件。
以下是使用POI库进行Excel文件操作的步骤。
1. 引入POI库首先需要引入POI库的相关依赖。
可以通过Maven来引入POI库,添加以下依赖到项目的pom.xml文件中即可:```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文件接下来,我们可以通过POI库的相关类来读取Excel文件。
首先需要创建一个文件输入流来读取Excel文件,然后通过HSSFWorkbook类来加载文件内容,最后可以通过遍历的方式获取Excel文件的内容。
以下是一个简单的示例:```javaFileInputStream file = new FileInputStream("example.xls"); HSSFWorkbook workbook = new HSSFWorkbook(file); HSSFSheet sheet = workbook.getSheetAt(0);for (Row row : sheet) {for (Cell cell : row) {// 处理单元格的内容}}```3. 处理Excel文件内容在读取Excel文件内容后,我们可以通过POI库提供的类来处理Excel 文件的内容,比如获取单元格的值、设置单元格的值等操作。
利用JAVA如何读取EXCEL中的数据

/** * 读取 Excel 中的数据.将这些数据放入到一个三维数组中. * @author Administrator * @param filePath 文件路径. * @deprecated:读取 Excel 中的数据将它放入到 ArrayList 数组中(此为 三维数组). */ public static ArrayList readExcel(String filePath) {
import jxl.Cell; import jxl.Sheet; import jxl.Workbook;
/** * <p>Title: </p> * <pre>Description: Excel 数据导入到 oracle 数据库类. * </pre> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: 易通技术有限公司</p> * @author Allen * @version 1.0 */ public class ExcelImportOracle {
/** * 将 readExcel 方法读出来的三维数组数据转换成二维数组数据. * @param al * @return 返回二维数组数据. */ public static ArrayList getDisplayData(ArrayList al) { ArrayList result = new ArrayList(); for(int i = 0;i < al.size();i ++)
/** * 用于返回三维数组的 ArrayList.
*/ private static ArrayList subdata = new ArrayList();
Java Excel API

JXL简介JXL(Java Excel API)是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。
使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。
因为是使用Java 编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。
可以分别通过如下命令:java -jar jxl.jar -xml test.xlsjava -jar jxl.jar -cvs test.xls以xml和cvs格式查看test.xls,这是因为JXL作者实现了一个用来演示的jxl.demo.Demo的类。
从Excel文件读取数据表Excel文件中的对象:1 文件对象2工作簿对象3 单元格对象。
相应的在JXL中就有Workbook,Sheet ,Cell 。
通过这三个对象我们就可以实现Excel文件的读取工作。
Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。
通过Workbook的静态方法getWorkbook选取Excel文件//直接从本地文件创建WorkbookWorkbook workbook = Workbook.getWorkbook(new File("myfile.xls"));//从输入流创建WorkbookInputStream input = new FileInputStream("myfile.xls");Workbook workbook = Workbook.getWorkbook(input);既可以通过工作表的名称来访问工作表,也可以通过下标来访问。
//通过Workbook的getSheet方法选择第一个工作表(从0开始)Sheet sheet = workbook.getSheet(0);//通过Sheet方法的getCell方法选择位置为C2的单元格(两个参数都从0开始)Cell cell = sheet.getCell(2,1);//通过Cell的getContents()方法可以将任何类型的Cell值都作为一个字符串返回String value = cell.getContents();Cell 提供了一个getType方法能够返回单元格的类型信息,同时JXL提供了一个CellType类用来预设Excel中的类型信息,而且JXL提供了一些Cell类的子类用来分别用来表示各种类型的单元格,如LabelCell,NumberCell,DateCell 分别表示字符、数值、日期类型的单元格。
java解析Excel(xls、xlsx两种格式)

java解析Excel(xls、xlsx两种格式)⼀、需要导⼊的jar mons-collections4-4.1.jar2.poi-3.17-beta1.jar 3.poi-ooxml-3.17-beta1.jar 4.poi-ooxml-schemas-3.17-beta1.jar5.xmlbeans-2.6.0.jar⼆、主要API 1.import ermodel.Workbook,对应Excel⽂档; 2.import ermodel.HSSFWorkbook,对应xls格式的Excel⽂档; 3.import ermodel.XSSFWorkbook,对应xlsx格式的Excel⽂档; 4.import ermodel.Sheet,对应Excel⽂档中的⼀个sheet; 5.import ermodel.Row,对应⼀个sheet中的⼀⾏; 6.import ermodel.Cell,对应⼀个单元格。
三、代码如下package poi;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import ermodel.HSSFWorkbook;import ermodel.Cell;import ermodel.DateUtil;import ermodel.Row;import ermodel.Sheet;import ermodel.Workbook;import ermodel.XSSFWorkbook;public class Testpoi {public static void main(String[] args) {Workbook wb =null;Sheet sheet = null;Row row = null;List<Map<String,String>> list = null;String cellData = null;String filePath = "D:\\test.xlsx";String columns[] = {"name","age","score"};wb = readExcel(filePath);if(wb != null){//⽤来存放表中数据list = new ArrayList<Map<String,String>>();//获取第⼀个sheetsheet = wb.getSheetAt(0);//获取最⼤⾏数int rownum = sheet.getPhysicalNumberOfRows();//获取第⼀⾏row = sheet.getRow(0);//获取最⼤列数int colnum = row.getPhysicalNumberOfCells();for (int i = 1; i<rownum; i++) {Map<String,String> map = new LinkedHashMap<String,String>();row = sheet.getRow(i);if(row !=null){for (int j=0;j<colnum;j++){cellData = (String) getCellFormatValue(row.getCell(j));map.put(columns[j], cellData);}}else{break;}list.add(map);}}//遍历解析出来的listfor (Map<String,String> map : list) {for (Entry<String,String> entry : map.entrySet()) {System.out.print(entry.getKey()+":"+entry.getValue()+",");}System.out.println();}}//读取excelpublic static Workbook readExcel(String filePath){Workbook wb = null;if(filePath==null){return null;}String extString = filePath.substring(stIndexOf("."));InputStream is = null;try {is = new FileInputStream(filePath);if(".xls".equals(extString)){return wb = new HSSFWorkbook(is);}else if(".xlsx".equals(extString)){return wb = new XSSFWorkbook(is);}else{return wb = null;}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return wb;}public static Object getCellFormatValue(Cell cell){Object cellValue = null;if(cell!=null){//判断cell类型switch(cell.getCellType()){case Cell.CELL_TYPE_NUMERIC:{cellValue = String.valueOf(cell.getNumericCellValue());break;}case Cell.CELL_TYPE_FORMULA:{//判断cell是否为⽇期格式if(DateUtil.isCellDateFormatted(cell)){//转换为⽇期格式YYYY-mm-ddcellValue = cell.getDateCellValue();}else{//数字cellValue = String.valueOf(cell.getNumericCellValue());}break;}case Cell.CELL_TYPE_STRING:{cellValue = cell.getRichStringCellValue().getString();break;}default:cellValue = "";}}else{cellValue = "";}return cellValue;}}四、运⾏结果 代码运⾏前保证在D盘下有⼀个test.xlsx⽂档,不然报⽂件找不到异常;Excel⽂档中的表头要和代码中的String columns[] = {"name","age","score"}对应起来。
jexcelapi解析excel函数

jexcelapi解析excel函数jExcelAPI是一个用于解析和生成Microsoft Excel文件的Java 库。
它提供了一组简单易用的API,使开发人员能够读取,写入和修改Excel文件。
本文将对jExcelAPI进行详细介绍,涵盖其功能、使用方法及其优缺点等方面。
jExcelAPI的功能主要包括以下几个方面:1.读取Excel文件:jExcelAPI支持读取Excel文件的内容,并将其转换为Java对象。
你可以使用它获取单元格的值、格式、公式等信息,并能够处理各种数据类型,如文本、数字、日期等。
2.写入Excel文件:jExcelAPI还提供了写入Excel文件的功能。
你可以使用它创建新的Excel文件或者修改现有的文件。
你可以设置单元格的值、格式、公式等,还可以插入图表、图片等内容。
3.处理Excel文件的格式:jExcelAPI支持读取和设置Excel文件的格式。
你可以通过它设置单元格的字体、文本对齐方式、边框样式等。
同时,你还可以设置整个工作表的名称、颜色、隐藏状态等。
4.处理Excel文件的公式:jExcelAPI支持读取和设置Excel文件的公式。
你可以使用它计算公式的结果,并将结果写入Excel文件。
同时,你还可以设置公式的引用范围、参数等。
使用jExcelAPI解析Excel文件的一般步骤如下:1.导入jExcelAPI库:首先,你需要在你的Java项目中导入jExcelAPI库。
你可以从官方网站下载最新的jar文件,并将其添加到你的项目中。
2.创建工作簿对象:通过创建`Workbook`对象,你可以读取或创建Excel文件。
可以使用`Workbook.getWorkbook(File file)`方法读取现有的Excel文件,或者使用`Workbook.createWorkbook(File file)`方法创建新的Excel文件。
3.获取工作表对象:通过工作簿对象,你可以获取工作表对象。
java读取excel表格的方法

java读取excel表格的⽅法在使⽤java的时候,希望从excel中读取到⼀些单元格的数据,供⼤家参考,具体内容如下1.Java读取的excel的api这⾥⽤到了⼀个叫jxl的api如下:<dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6.12</version></dependency>在java中需要去导⼊⼀些类去读取excelimport jxl.Workbook; //java读取excel表使⽤的类import jxl.Cell; //java读取表格⾥的单元格的类import jxl.Sheet; //java读取的⼯作铺的类⾸先:创建⼀个File 去读取⽂件(我以D盘redisInput⽂件下的GPSINFO.xls⽂件为例)注意:不能够读取xlsx后缀的excel⽂件,否则会报错: Unable to recognize OLE streamFile Inputfile = new File("D:\\redisInput\\GPSINFO.xls");使⽤字符流去接File的数据FileInputStream fileInputStream = new FileInputStream(Inputfile);workbook去接fileInputStreamWorkbook workbook = Workbook.getWorkbook(fileInputStream);这样读取到了excel⽂件,但是需要去判断是哪⼀个⼯作簿,要⽤到Sheet类Sheet readfirst = workbook.getSheet(0);如果getsheet(0)那么就是去访问第⼀个⼯作簿⾥的数据,然后可以在sheet类中看有多少有效⾏和有效列int rows = readfirst.getRows();int clomns = readfirst.getColumns();System.out.println("row:" + rows);System.out.println("clomns:" + clomns);如果想看每个单元格的数据可以使⽤⼀个双重循环去读取每⼀个有效单元格⾥数据for(int i =1;i<rows;i++) {for(int j =1;i<rows;i++) {Cell cell = readfirst.getCell(j,i); //j在前 i 在后是根据excel下标来判断的String s = cell.getContents();System.out.println("cell"+s);}这样就把所有的有效单元格输出了。
java导出excel案例
JA V A实现EXCEL的导入和导出(四)JA V A EXCEL API简介Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。
使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。
因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。
现在发布的稳定版本是V2.0,提供以下功能:* 从Excel 95、97、2000等格式的文件中读取数据;* 读取Excel公式(可以读取Excel 97以后的公式);* 生成Excel数据表(格式为Excel 97);* 支持字体、数字、日期的格式化;* 支持单元格的阴影操作,以及颜色操作;* 修改已经存在的数据表;现在还不支持以下功能,但不久就会提供了:1. 不能够读取图表信息;2. 可以读,但是不能生成公式,任何类型公式最后的计算值都可以读出;回页首应用示例1 从Excel文件读取数据表Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。
读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:(完整代码见ExcelReading.java)import java.io.*;import jxl.*;… … … …try{//构建Workbook对象, 只读Workbook对象//直接从本地文件创建Workbook//从输入流创建WorkbookInputStream is = new FileInputStream(sourcefile);jxl.Workbook rwb = Workbook.getWorkbook(is);}catch (Exception e){e.printStackTrace();}一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。
全面挖掘Java Excel API 使用方法
现在发布的稳定版本是V2.0,提供以下功能:
从Excel 95、97、2000等格式的文件中读取数据;
读取Excel公式(可以读取Excel 97以后的公式);
生成Excel数据表(格式为Excel 97);
支持字体、数字、日期的格式化;
支持单元格的阴影操作,以及颜色操作;
Workbook类提供的方法
1. int getNumberOfSheets()
获得工作薄(Workbook)中工作表(Sheet)的个数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
}
if(c10.getType() == CellType.NUMBER)
{
NmberCell numc10 = (NumberCell)c10;
strc10 = numc10.getvalue();
}
if(c11.getType() == CellType.DATE)
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getColumn(0);
4) int getRows()
获取Sheet表中所包含的总行数,示例:
{
DateCell datec11 = (DateCell)c11;
strc11 = datec11.getDate();
}
System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " + c00.getType());
Java生成和操作Excel文件
Java⽣成和操作Excel⽂件JAVA EXCEL API:是⼀开放源码项⽬,通过它Java开发⼈员可以读取Excel⽂件的内容、创建新的Excel⽂件、更新已经存在的Excel⽂件。
使⽤该API⾮Windows操作系统也可以通过纯Java应⽤来处理Excel数据表。
因为它是使⽤Java编写的,所以我们在Web应⽤中可以通过JSP、Servlet来调⽤API实现对Excel数据表的访问。
下载:官⽅⽹站下载最新版本(本⼈下的是jexcelapi_2_6_12.tar.gz,解压后将⾥⾯的jxl.jar复制到WEB-INF/lib⽬录下⾯即可)Java Excel API的jar包可以通过以下URL获得:(包括所有版本):直接下载地址(迅雷上新建任务即可):⼀、JSP⽣成简单的Excel⽂件package beans.excel;import java.io.IOException;import java.io.OutputStream;import jxl.Workbook;import bel;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class SimpleExcelWrite {public void createExcel(OutputStream os) throws WriteException,IOException{//创建⼯作薄WritableWorkbook workbook = Workbook.createWorkbook(os);//创建新的⼀页WritableSheet sheet = workbook.createSheet("First Sheet",0);//创建要显⽰的内容,创建⼀个单元格,第⼀个参数为列坐标,第⼆个参数为⾏坐标,第三个参数为内容Label xuexiao = new Label(0,0,"学校");sheet.addCell(xuexiao);Label zhuanye = new Label(1,0,"专业");sheet.addCell(zhuanye);Label jingzhengli = new Label(2,0,"专业竞争⼒");sheet.addCell(jingzhengli);Label qinghua = new Label(0,1,"清华⼤学");sheet.addCell(qinghua);Label jisuanji = new Label(1,1,"计算机专业");sheet.addCell(jisuanji);Label gao = new Label(2,1,"⾼");sheet.addCell(gao);Label beida = new Label(0,2,"北京⼤学");sheet.addCell(beida);Label falv = new Label(1,2,"法律专业");sheet.addCell(falv);Label zhong = new Label(2,2,"中");sheet.addCell(zhong);Label ligong = new Label(0,3,"北京理⼯⼤学");sheet.addCell(ligong);Label hangkong = new Label(1,3,"航空专业");sheet.addCell(hangkong);Label di = new Label(2,3,"低");sheet.addCell(di);//把创建的内容写⼊到输出流中,并关闭输出流workbook.write();workbook.close();os.close();}}SimpleExcelWrite.jsp<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><%@ page import="java.io.*" %><%@ page import="beans.excel.*" %><%String fname = "学校竞争⼒情况";OutputStream os = response.getOutputStream();//取得输出流response.reset();//清空输出流//下⾯是对中⽂⽂件名的处理response.setCharacterEncoding("UTF-8");//设置相应内容的编码格式fname = .URLEncoder.encode(fname,"UTF-8");response.setHeader("Content-Disposition","attachment;filename="+new String(fname.getBytes("UTF-8"),"GBK")+".xls"); response.setContentType("application/msexcel");//定义输出类型SimpleExcelWrite sw = new SimpleExcelWrite();sw.createExcel(os);%><html><head><title></title></head><body></body></html>⼆、⽣成复杂数据格式Excel⽂件package beans.excel;import java.io.IOException;import java.io.OutputStream;import java.util.Calendar;import java.util.Date;import jxl.Workbook;import jxl.write.Boolean;import jxl.write.DateFormats;import jxl.write.DateTime;import bel;import jxl.write.Number;import jxl.write.WritableCellFormat;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class ComplexDataExcelWrite {public void createExcel(OutputStream os) throws WriteException,IOException {//创建⼯作薄WritableWorkbook workbook = Workbook.createWorkbook(os);//创建新的⼀页WritableSheet sheet = workbook.createSheet("First Sheet", 0);//创建要显⽰的具体内容Label formate = new Label(0,0,"数据格式");sheet.addCell(formate);Label floats = new Label(1,0,"浮点型");sheet.addCell(floats);Label integers = new Label(2,0,"整型");sheet.addCell(integers);Label booleans = new Label(3,0,"布尔型");sheet.addCell(booleans);Label dates = new Label(4,0,"⽇期格式");sheet.addCell(dates);Label example = new Label(0,1,"数据⽰例");sheet.addCell(example);//浮点数据Number number = new Number(1,1,3.1415926535);sheet.addCell(number);//整形数据Number ints = new Number(2,1,15042699);sheet.addCell(ints);Boolean bools = new Boolean(3,1,true);sheet.addCell(bools);//⽇期型数据Calendar c = Calendar.getInstance();Date date = c.getTime();WritableCellFormat cf1 = new WritableCellFormat(DateFormats.FORMAT1);DateTime dt = new DateTime(4,1,date,cf1);sheet.addCell(dt);//把创建的内容写⼊到输出流中,并关闭输出流workbook.write();workbook.close();os.close();}}三、⽣成复杂布局和样式的Excel⽂件package beans.excel;import java.io.IOException;import java.io.OutputStream;import java.util.Calendar;import java.util.Date;import jxl.Workbook;import jxl.format.Colour;import jxl.format.UnderlineStyle;import jxl.write.Boolean;import jxl.write.DateFormats;import jxl.write.DateTime;import bel;import jxl.write.Number;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class MutiStyleExcelWrite {public void createExcel(OutputStream os) throws WriteException,IOException {//创建⼯作薄WritableWorkbook workbook = Workbook.createWorkbook(os);//创建新的⼀页WritableSheet sheet = workbook.createSheet("First Sheet", 0);//构造表头sheet.mergeCells(0, 0, 4, 0);//添加合并单元格,第⼀个参数是起始列,第⼆个参数是起始⾏,第三个参数是终⽌列,第四个参数是终⽌⾏WritableFont bold = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//设置字体种类和⿊体显⽰,字体为Arial,字号⼤⼩为10,采⽤⿊体显⽰WritableCellFormat titleFormate = new WritableCellFormat(bold);//⽣成⼀个单元格样式控制对象titleFormate.setAlignment(jxl.format.Alignment.CENTRE);//单元格中的内容⽔平⽅向居中titleFormate.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//单元格的内容垂直⽅向居中Label title = new Label(0,0,"JExcelApi⽀持数据类型详细说明",titleFormate);sheet.setRowView(0, 600, false);//设置第⼀⾏的⾼度sheet.addCell(title);//创建要显⽰的具体内容WritableFont color = new WritableFont(WritableFont.ARIAL);//选择字体color.setColour(Colour.GOLD);//设置字体颜⾊为⾦黄⾊WritableCellFormat colorFormat = new WritableCellFormat(color);Label formate = new Label(0,1,"数据格式",colorFormat);sheet.addCell(formate);Label floats = new Label(1,1,"浮点型");sheet.addCell(floats);Label integers = new Label(2,1,"整型");sheet.addCell(integers);Label booleans = new Label(3,1,"布尔型");sheet.addCell(booleans);Label dates = new Label(4,1,"⽇期格式");sheet.addCell(dates);Label example = new Label(0,2,"数据⽰例",colorFormat);sheet.addCell(example);//浮点数据//设置下划线WritableFont underline= new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.NO_BOLD,false,UnderlineStyle.SINGLE); WritableCellFormat greyBackground = new WritableCellFormat(underline);greyBackground.setBackground(Colour.GRAY_25);//设置背景颜⾊为灰⾊Number number = new Number(1,2,3.1415926535,greyBackground);sheet.addCell(number);//整形数据WritableFont boldNumber = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//⿊体WritableCellFormat boldNumberFormate = new WritableCellFormat(boldNumber);Number ints = new Number(2,2,15042699,boldNumberFormate);sheet.addCell(ints);//布尔型数据Boolean bools = new Boolean(3,2,true);sheet.addCell(bools);//⽇期型数据//设置⿊体和下划线WritableFont boldDate = new WritableFont(WritableFont.ARIAL,WritableFont.DEFAULT_POINT_SIZE,WritableFont.BOLD,false,UnderlineStyle.SINGLE);WritableCellFormat boldDateFormate = new WritableCellFormat(boldDate,DateFormats.FORMAT1);Calendar c = Calendar.getInstance();Date date = c.getTime();DateTime dt = new DateTime(4,2,date,boldDateFormate);sheet.addCell(dt);//把创建的内容写⼊到输出流中,并关闭输出流workbook.write();workbook.close();os.close();}}四、JSP读取Excel报表<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><%@ page import="java.io.File" %><%@ page import="jxl.Cell" %><%@ page import="jxl.Sheet" %><%@ page import="jxl.Workbook" %><html><head><title></title></head><body><font size="2"><%String fileName = "D:/学校竞争⼒情况.xls";File file = new File(fileName);//根据⽂件名创建⼀个⽂件对象Workbook wb = Workbook.getWorkbook(file);//从⽂件流中取得Excel⼯作区对象Sheet sheet = wb.getSheet(0);//从⼯作区中取得页,取得这个对象的时候既可以⽤名称来获得,也可以⽤序号。
java excel导入导出 原理
java excel导入导出原理
Java Excel导入导出的原理是通过Java程序调用POI(Poor Objectionable Interfaces)API,实现对Excel文件进行读取和写入操作。
在导入Excel文件时,Java程序通过POI API读取Excel文件中的数据,将其转换为Java对象作为程序的数据源。
在导出Excel文件时,Java程序将程序中维护的数据源通过POI API写入Excel文件中,生成Excel文件。
Java程序通过使用POI API,可以实现对Excel文件进行各种操作,包括创建、修改、读取和写入操作。
POI API可以实现读取和写入Excel 文件的不同格式,包括XLS和XLSX格式。
同时,POI API还支持对Excel 文件进行图表、图片等操作,可以实现较为复杂的Excel文件的操作。
总之,Java Excel导入导出的原理是通过Java程序调用POI API实现对Excel文件的读取和写入操作,并将Excel文件中的数据转换为Java对象,进而实现程序与Excel文件的数据交换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Workbook类提供的方法
1. int getNumberOfSheets()
获得工作薄(Workbook)中工作表(Sheet)的个数,示例:jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); int sheets = rwb.getNumberOfSheets();
2. Sheet[] getSheets()
返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); Sheet[] sheets = rwb.getSheets();
3. String getVersion()
返回正在使用的API的版本号,好像是没什么太大的作用。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); String apiVersion = rwb.getVersion();
Sheet接口提供的方法
1) String getName()
获取Sheet的名称,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); jxl.Sheet rs = rwb.getSheet(0);
String sheetName = rs.getName();
2) int getColumns()
获取Sheet表中所包含的总列数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile)); jxl.Sheet rs = rwb.getSheet(0);
int rsColumns = rs.getColumns();
3) Cell[] getColumn(int column)
获取某一列的所有单元格,返回的是单元格对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getColumn(0);
4) int getRows()
获取Sheet表中所包含的总行数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
int rsRows = rs.getRows();
5) Cell[] getRow(int row)
获取某一行的所有单元格,返回的是单元格对象数组,示例子:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell[] cell = rs.getRow(0);
6) Cell getCell(int column, int row)
获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,这与通常的行、列组合有些不同。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
jxl.Sheet rs = rwb.getSheet(0);
Cell cell = rs.getCell(0, 0);
2、生成新的Excel工作薄
下面的代码主要是向大家介绍如何生成简单的Excel工作表,在这里单元格的内容是不带任何修饰的(如:字体,颜色等等),所有的内容都作为字符串写入。
(完整代码见ExcelWriting.java)
与读取Excel工作表相似,首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象,这里要注意的是,只能通过API提供的工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,因为类WritableWorkbook的构造函数为protected类型。
示例代码片段如下:
import java.io.*;
import jxl.*;
import jxl.write.*;
… … … …
try
{
//构建Workbook对象, 只读Workbook对象
//Method 1:创建可写入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));
//Method 2:将WritableWorkbook直接写入到输出流
/*
OutputStream os = new FileOutputStream(targetfile);
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);
*/
}
catch (Exception e)
{
e.printStackTrace();
}
API提供了两种方式来处理可写入的输出流,一种是直接生成本地文件,如果文件名不带全路径的话,缺省的文件会定位在当前目录,如果文件名带有全路径的话,则生成的Excel文件则会定位在相应的目录;另外一种是将Excel对象直接写入到输出流,例如:用户通过浏览器来访问Web服务器,如果HTTP头设置正确的话,浏览器自动调用客户端的Excel应用程序,来显示动态生成的Excel电子表格。
接下来就是要创建工作表,创建工作表的方法与创建工作薄的方法几乎一样,同样是通过工厂模式方法获得相应的对象,该方法需要两个参数,一个是工作表的名称,另一个是工作表在工作薄中的位置,参考下面的代码片段:
//创建Excel工作表
jxl.write.WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
"这锅也支好了,材料也准备齐全了,可以开始下锅了!",现在要做的只是实例化API所提供的Excel基本数据类型,并将它们添加到工作表中就可以了,参考下面的代码片段:
//1.添加Label对象
bel labelC = new bel(0, 0, "This is a Label cell");
ws.addCell(labelC);
//添加带有字型Formatting的对象
jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);
bel labelCF = new bel(1, 0, "This is a Label Cell", wcfF);
ws.addCell(labelCF);
//添加带有字体颜色Formatting的对象
jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,
Underlinestyle.NO_UNDERLINE, jxl.format.Colour.RED);
jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);
bel labelCFC = new bel(1, 0, "This is a Label Cell", wcfFC);
ws.addCell(labelCF);
//2.添加Number对象
jxl.write.Number labelN = new jxl.write.Number(0, 1, 3.1415926);。