`

jExcel API讲解

阅读更多
如果在你的项目中需要解析 Excel 文件,比如,作为用户上传的模板进行解析。那么选择 jExcel 将是一个不错的决定!虽然 Apache 的 Commons 开源组件包 POI 也能完成相同的功能,但 jExcel 小巧、对中文支持更好!噢,这就足够了!不是吗?我将 jExcel 的主要功能封装成 8 个文件,分别如下。

(1) IExcelWorkbook.java 文件。
Java代码 复制代码
  1. import java.util.List;   
  2. import java.util.Map;   
  3.   
  4. /**  
  5.  * IExcelWorkbook 表示只读的 Excel 工作簿。<br>  
  6.  * flysoft company.<br>  
  7.  * @author Dingli.<br>  
  8.  * Jun 15, 2008 12:37:31 AM  
  9.  */  
  10. public interface IExcelWorkbook   
  11. {   
  12.     /**  
  13.      * 获取一行单元格的内容。  
  14.      * @param sheetName 工作表名称。  
  15.      * @param rowIndex 基于0的行索引。  
  16.      * @return 单元格的内容。  
  17.      */  
  18.     public Object[] getWorksheetRow(String sheetName, int rowIndex);   
  19.   
  20.     /**  
  21.      * 获取一行单元格的内容。  
  22.      * @param sheetIndex 基于0的工作表索引。  
  23.      * @param rowIndex 基于0的行索引。  
  24.      * @return 单元格的内容。  
  25.      */  
  26.     public Object[] getWorksheetRow(int sheetIndex, int rowIndex);   
  27.   
  28.     /**  
  29.      * 访问全部工作表内容。  
  30.      * @param excelCellVisitNotify Excel 工作表单元格访问通知接口。  
  31.      */  
  32.     public void visitWorksheets(IExcelCellVisitNotify excelCellVisitNotify);   
  33.   
  34.     /**  
  35.      * 访问指定的工作表内容。  
  36.      * @param sheetName 工作表名称。  
  37.      * @param excelCellVisitNotify Excel 工作表单元格访问通知接口。  
  38.      */  
  39.     public void visitWorksheet(String sheetName, IExcelCellVisitNotify excelCellVisitNotify);   
  40.   
  41.     /**  
  42.      * 访问指定的工作表内容。  
  43.      * @param sheetIndex 基于0的工作表索引。  
  44.      * @param excelCellVisitNotify Excel 工作表单元格访问通知接口。  
  45.      */  
  46.     public void visitWorksheet(int sheetIndex, IExcelCellVisitNotify excelCellVisitNotify);   
  47.   
  48.     /**  
  49.      * 获取全部工作表内容。  
  50.      * @return 保存有全部工作表内容的 Map 对象。Map 的 key 为工作表的名称,value 为 List 对象。  
  51.      */  
  52.     public Map getWorksheets();   
  53.   
  54.     /**  
  55.      * 获取工作表内容。  
  56.      * @param sheetName 工作表名称。  
  57.      * @return 工作表内容。  
  58.      */  
  59.     public List getWorksheet(String sheetName);   
  60.   
  61.     /**  
  62.      * 获取工作表内容。  
  63.      * @param sheetIndex 基于0的工作表索引。  
  64.      * @return 工作表内容。  
  65.      */  
  66.     public List getWorksheet(int sheetIndex);   
  67.   
  68.     /**  
  69.      * 关闭工作簿。  
  70.      * @throws Exception Exception 异常。  
  71.      */  
  72.     public void closeWorkbook() throws Exception;   
  73. }  
import java.util.List;
import java.util.Map;

/**
 * IExcelWorkbook 表示只读的 Excel 工作簿。<br>
 * flysoft company.<br>
 * @author Dingli.<br>
 * Jun 15, 2008 12:37:31 AM
 */
public interface IExcelWorkbook
{
	/**
	 * 获取一行单元格的内容。
	 * @param sheetName 工作表名称。
	 * @param rowIndex 基于0的行索引。
	 * @return 单元格的内容。
	 */
	public Object[] getWorksheetRow(String sheetName, int rowIndex);

	/**
	 * 获取一行单元格的内容。
	 * @param sheetIndex 基于0的工作表索引。
	 * @param rowIndex 基于0的行索引。
	 * @return 单元格的内容。
	 */
	public Object[] getWorksheetRow(int sheetIndex, int rowIndex);

	/**
	 * 访问全部工作表内容。
	 * @param excelCellVisitNotify Excel 工作表单元格访问通知接口。
	 */
	public void visitWorksheets(IExcelCellVisitNotify excelCellVisitNotify);

	/**
	 * 访问指定的工作表内容。
	 * @param sheetName 工作表名称。
	 * @param excelCellVisitNotify Excel 工作表单元格访问通知接口。
	 */
	public void visitWorksheet(String sheetName, IExcelCellVisitNotify excelCellVisitNotify);

	/**
	 * 访问指定的工作表内容。
	 * @param sheetIndex 基于0的工作表索引。
	 * @param excelCellVisitNotify Excel 工作表单元格访问通知接口。
	 */
	public void visitWorksheet(int sheetIndex, IExcelCellVisitNotify excelCellVisitNotify);

	/**
	 * 获取全部工作表内容。
	 * @return 保存有全部工作表内容的 Map 对象。Map 的 key 为工作表的名称,value 为 List 对象。
	 */
	public Map getWorksheets();

	/**
	 * 获取工作表内容。
	 * @param sheetName 工作表名称。
	 * @return 工作表内容。
	 */
	public List getWorksheet(String sheetName);

	/**
	 * 获取工作表内容。
	 * @param sheetIndex 基于0的工作表索引。
	 * @return 工作表内容。
	 */
	public List getWorksheet(int sheetIndex);

	/**
	 * 关闭工作簿。
	 * @throws Exception Exception 异常。
	 */
	public void closeWorkbook() throws Exception;
}

(2) IExcelWritableWorkbook.java 文件
Java代码 复制代码
  1. import java.util.List;   
  2.   
  3. /**  
  4.  * IExcelWritableWorkbook 表示可写的 Excel 工作簿。<br>  
  5.  * flysoft company.<br>  
  6.  * @author Dingli.<br>  
  7.  * Jun 14, 2008 1:00:36 PM  
  8.  */  
  9. public interface IExcelWritableWorkbook extends IExcelWorkbook   
  10. {   
  11.     /**  
  12.      * 建立工作簿。  
  13.      * @param fileName 文件路径。  
  14.      * @throws Exception Exception 异常。  
  15.      */  
  16.     public void createWorkbook(String fileName) throws Exception;   
  17.   
  18.     /**  
  19.      * 建立工作表。要确保在 finally 块使用 closeWorkbook() 方法关闭工作簿,否则工作簿内容将在异常发生时丢失。  
  20.      * @param sheetName 工作表名称。  
  21.      * @param sheetIndex 基于0的工作表索引。  
  22.      * @param list 工作表内容。List 中的每个元素表示一行,以对象数组表示。  
  23.      * @throws Exception Exception 异常。  
  24.      */  
  25.     public void createWorksheet(String sheetName, int sheetIndex, List list) throws Exception;   
  26.   
  27.     /**  
  28.      * 删除工作表。  
  29.      * @param sheetIndex 基于0的工作表索引。  
  30.      */  
  31.     public void removeWorksheet(int sheetIndex);   
  32. }  
import java.util.List;

/**
 * IExcelWritableWorkbook 表示可写的 Excel 工作簿。<br>
 * flysoft company.<br>
 * @author Dingli.<br>
 * Jun 14, 2008 1:00:36 PM
 */
public interface IExcelWritableWorkbook extends IExcelWorkbook
{
	/**
	 * 建立工作簿。
	 * @param fileName 文件路径。
	 * @throws Exception Exception 异常。
	 */
	public void createWorkbook(String fileName) throws Exception;

	/**
	 * 建立工作表。要确保在 finally 块使用 closeWorkbook() 方法关闭工作簿,否则工作簿内容将在异常发生时丢失。
	 * @param sheetName 工作表名称。
	 * @param sheetIndex 基于0的工作表索引。
	 * @param list 工作表内容。List 中的每个元素表示一行,以对象数组表示。
	 * @throws Exception Exception 异常。
	 */
	public void createWorksheet(String sheetName, int sheetIndex, List list) throws Exception;

	/**
	 * 删除工作表。
	 * @param sheetIndex 基于0的工作表索引。
	 */
	public void removeWorksheet(int sheetIndex);
}

(3) IExcelFactory.java 文件。
Java代码 复制代码
  1. import java.io.InputStream;   
  2.   
  3. /**  
  4.  * Excel 工作簿构建工厂。<br>  
  5.  * flysoft company.<br>  
  6.  * @author Dingli.<br>  
  7.  * Jun 15, 2008 12:33:33 AM  
  8.  */  
  9. public interface IExcelFactory   
  10. {   
  11.     /**  
  12.      * 打开一个只读的 Excel 工作簿并返回。  
  13.      * @param fileName 文件路径。  
  14.      * @return 一个只读的 Excel 工作簿。  
  15.      * @throws Exception Exception 异常。  
  16.      */  
  17.     public IExcelWorkbook openExcelWorkbook(String fileName) throws Exception;   
  18.   
  19.     /**  
  20.      * 打开一个只读的 Excel 工作簿并返回。  
  21.      * @param inputStream 基本输入流。  
  22.      * @return 一个只读的 Excel 工作簿。  
  23.      * @throws Exception Exception 异常。  
  24.      */  
  25.     public IExcelWorkbook openExcelWorkbook(InputStream inputStream) throws Exception;   
  26.   
  27.     /**  
  28.      * 建立一个可写的 Excel 工作簿并返回。  
  29.      * @return 一个可写的 Excel 工作簿。  
  30.      */  
  31.     public IExcelWritableWorkbook createExcelWritableWorkbook();   
  32.   
  33.     /**  
  34.      * 建立一个可写的 Excel 工作簿并返回。  
  35.      * @param fileName 文件路径。  
  36.      * @return 一个可写的 Excel 工作簿。  
  37.      * @throws Exception Exception 异常。  
  38.      */  
  39.     public IExcelWritableWorkbook createExcelWritableWorkbook(String fileName) throws Exception;   
  40.   
  41.     /**  
  42.      * 打开一个可写的 Excel 工作簿并返回。  
  43.      * @param fileName 文件路径。  
  44.      * @return 一个可写的 Excel 工作簿。  
  45.      * @throws Exception Exception 异常。  
  46.      */  
  47.     public IExcelWritableWorkbook openExcelWritableWorkbook(String fileName) throws Exception;   
  48. }  
import java.io.InputStream;

/**
 * Excel 工作簿构建工厂。<br>
 * flysoft company.<br>
 * @author Dingli.<br>
 * Jun 15, 2008 12:33:33 AM
 */
public interface IExcelFactory
{
	/**
	 * 打开一个只读的 Excel 工作簿并返回。
	 * @param fileName 文件路径。
	 * @return 一个只读的 Excel 工作簿。
	 * @throws Exception Exception 异常。
	 */
	public IExcelWorkbook openExcelWorkbook(String fileName) throws Exception;

	/**
	 * 打开一个只读的 Excel 工作簿并返回。
	 * @param inputStream 基本输入流。
	 * @return 一个只读的 Excel 工作簿。
	 * @throws Exception Exception 异常。
	 */
	public IExcelWorkbook openExcelWorkbook(InputStream inputStream) throws Exception;

	/**
	 * 建立一个可写的 Excel 工作簿并返回。
	 * @return 一个可写的 Excel 工作簿。
	 */
	public IExcelWritableWorkbook createExcelWritableWorkbook();

	/**
	 * 建立一个可写的 Excel 工作簿并返回。
	 * @param fileName 文件路径。
	 * @return 一个可写的 Excel 工作簿。
	 * @throws Exception Exception 异常。
	 */
	public IExcelWritableWorkbook createExcelWritableWorkbook(String fileName) throws Exception;

	/**
	 * 打开一个可写的 Excel 工作簿并返回。
	 * @param fileName 文件路径。
	 * @return 一个可写的 Excel 工作簿。
	 * @throws Exception Exception 异常。
	 */
	public IExcelWritableWorkbook openExcelWritableWorkbook(String fileName) throws Exception;
}

(4) IExcelCellVisitNotify.java 文件。
Java代码 复制代码
  1. /**  
  2.  * Excel 工作表单元格访问通知接口。<br>  
  3.  * flysoft company.<br>  
  4.  * @author Dingli.<br>  
  5.  * Jun 7, 2008 1:05:18 PM  
  6.  */  
  7. public interface IExcelCellVisitNotify   
  8. {   
  9.     /**  
  10.      * 实现此方法用于访问到每一个单元格时给与通知。  
  11.      * @param sheetName 当前访问的工作表名称。  
  12.      * @param rowIndex 当前访问的基于0的工作表行。  
  13.      * @param columnIndex 当前访问的基于0的工作表列。  
  14.      * @param cellContent 当前访问单元格内容。  
  15.      */  
  16.     public void cellVisit(String sheetName, int rowIndex, int columnIndex, Object cellContent);   
  17. }  
/**
 * Excel 工作表单元格访问通知接口。<br>
 * flysoft company.<br>
 * @author Dingli.<br>
 * Jun 7, 2008 1:05:18 PM
 */
public interface IExcelCellVisitNotify
{
	/**
	 * 实现此方法用于访问到每一个单元格时给与通知。
	 * @param sheetName 当前访问的工作表名称。
	 * @param rowIndex 当前访问的基于0的工作表行。
	 * @param columnIndex 当前访问的基于0的工作表列。
	 * @param cellContent 当前访问单元格内容。
	 */
	public void cellVisit(String sheetName, int rowIndex, int columnIndex, Object cellContent);
}

(5) ExcelWritableWorkbook.java 文件。
Java代码 复制代码
  1. import java.io.File;   
  2. import java.util.ArrayList;   
  3. import java.util.HashMap;   
  4. import java.util.List;   
  5. import java.util.Map;   
  6. import jxl.Cell;   
  7. import jxl.Workbook;   
  8. import jxl.write.Label;   
  9. import jxl.write.WritableSheet;   
  10. import jxl.write.WritableWorkbook;   
  11.   
  12. /**  
  13.  * ExcelWritableWorkbook 表示可写的 Excel 工作簿。<br>  
  14.  * flysoft company.<br>  
  15.  * @author Dingli.<br>  
  16.  * Jun 14, 2008 1:01:10 PM  
  17.  */  
  18. class ExcelWritableWorkbook implements IExcelWritableWorkbook   
  19. {   
  20.     //Excel 工作簿对象。   
  21.     private WritableWorkbook writableWorkbook = null;   
  22.   
  23.     /**  
  24.      * ExcelWritableWorkbook 的默认构造方法。  
  25.      */  
  26.     public ExcelWritableWorkbook()   
  27.     {}   
  28.   
  29.     /**  
  30.      * 建立工作簿。  
  31.      * @param fileName 文件路径。  
  32.      * @throws Exception Exception 异常。  
  33.      */  
  34.     public ExcelWritableWorkbook(String fileName) throws Exception   
  35.     {   
  36.         this.createWorkbook(fileName);   
  37.     }   
  38.   
  39.     /**  
  40.      * 打开工作簿。要确保在 finally 块使用 closeWorkbook() 方法关闭工作簿,否则工作簿内容将在异常发生时丢失。  
  41.      * @param fileName 文件路径。  
  42.      * @return ExcelWorkbook 对象。  
  43.      * @throws Exception Exception 异常。  
  44.      */  
  45.     public static ExcelWritableWorkbook openWorkbook(String fileName) throws Exception   
  46.     {   
  47.         ExcelWritableWorkbook excelWritableWorkbook = new ExcelWritableWorkbook();   
  48.         excelWritableWorkbook.writableWorkbook = Workbook.createWorkbook(new File(fileName));//, Workbook.getWorkbook(new File(fileName)));   
  49.         return excelWritableWorkbook;   
  50.     }   
  51.   
  52.     /*  
  53.      * (non-Javadoc)  
  54.      * @see com.flysoft.dozen.support.jxl.IExcelWritableWorkbook#createWorkbook(java.lang.String)  
  55.      */  
  56.     public void createWorkbook(String fileName) throws Exception   
  57.     {   
  58.         this.writableWorkbook = Workbook.createWorkbook(new File(fileName));   
  59.     }   
  60.   
  61.     /*  
  62.      * (non-Javadoc)  
  63.      * @see com.flysoft.dozen.support.jxl.IExcelWritableWorkbook#createWorksheet(java.lang.String, int, java.util.List)  
  64.      */  
  65.     public void createWorksheet(String sheetName, int sheetIndex, List list) throws Exception   
  66.     {   
  67.         if(this.writableWorkbook != null)   
  68.         {   
  69.             WritableSheet writableSheet = this.writableWorkbook.createSheet(sheetName, sheetIndex);   
  70.             for(int i = 0; i < list.size(); i++)   
  71.             {   
  72.                 Object[] row = (Object[])list.get(i);   
  73.                 for(int j = 0; j < row.length; j++)   
  74.                 {   
  75.                     Label label = new Label(j, i, row[j].toString());   
  76.                     writableSheet.addCell(label);   
  77.                 }   
  78.             }   
  79.         }   
  80.     }   
  81.   
  82.     /*  
  83.      * (non-Javadoc)  
  84.      * @see com.flysoft.dozen.support.jxl.IExcelWritableWorkbook#getWorksheetRow(java.lang.String, int)  
  85.      */  
  86.     public Object[] getWorksheetRow(String sheetName, int rowIndex)   
  87.     {   
  88.         return this.getWorksheetRow(rowIndex, sheetName);   
  89.     }   
  90.   
  91.     /*  
  92.      * (non-Javadoc)  
  93.      * @see com.flysoft.dozen.support.jxl.IExcelWritableWorkbook#getWorksheetRow(int, int)  
  94.      */  
  95.     public Object[] getWorksheetRow(int sheetIndex, int rowIndex)   
  96.     {   
  97.         return this.getWorksheetRow(rowIndex, Integer.valueOf(sheetIndex));   
  98.     }   
  99.   
  100.     /*  
  101.      * (non-Javadoc)  
  102.      * @see com.flysoft.dozen.support.jxl.IExcelWritableWorkbook#visitWorksheets(com.flysoft.dozen.support.jxl.IExcelCellVisitNotify)  
  103.      */  
  104.     public void visitWorksheets(IExcelCellVisitNotify excelCellVisitNotify)   
  105.     {   
  106.         if(this.writableWorkbook != null)   
  107.         {   
  108.             String[] sheetNames = this.writableWorkbook.getSheetNames();   
  109.             for(int i = 0; i < sheetNames.length; i++)   
  110.             {   
  111.                 this.getWorksheet(sheetNames[i], excelCellVisitNotify);   
  112.             }   
  113.         }   
  114.     }   
  115.   
  116.     /*  
  117.      * (non-Javadoc)  
  118.      * @see com.flysoft.dozen.support.jxl.IExcelWritableWorkbook#visitWorksheet(java.lang.String, com.flysoft.dozen.support.jxl.IExcelCellVisitNotify)  
  119.      */  
  120.     public void visitWorksheet(String sheetName, IExcelCellVisitNotify excelCellVisitNotify)   
  121.     {   
  122.         this.getWorksheet(sheetName, excelCellVisitNotify);   
  123.     }   
  124.   
  125.     /*  
  126.      * (non-Javadoc)  
  127.      * @see com.flysoft.dozen.support.jxl.IExcelWritableWorkbook#visitWorksheet(int, com.flysoft.dozen.support.jxl.IExcelCellVisitNotify)  
  128.      */  
  129.     public void visitWorksheet(int sheetIndex, IExcelCellVisitNotify excelCellVisitNotify)   
  130.     {   
  131.         this.getWorksheet(Integer.valueOf(sheetIndex), excelCellVisitNotify);   
  132.     }   
  133.   
  134.     /*  
  135.      * (non-Javadoc)  
  136.      * @see com.flysoft.dozen.support.jxl.IExcelWritableWorkbook#getWorksheets()  
  137.      */  
  138.     public Map getWorksheets()   
  139.     {   
  140.         Map map = null;   
  141.         if(this.writableWorkbook != null)   
  142.         {   
  143.             String[] sheetNames = this.writableWorkbook.getSheetNames();   
  144.             map = new HashMap(sheetNames.length);   
  145.             for(int i = 0; i < sheetNames.length; i++)   
  146.             {   
  147.                 map.put(sheetNames[i], this.getWorksheet(sheetNames[i], null));   
  148.             }   
  149.         }   
  150.         return map;   
  151.     }   
  152.   
  153.     /*  
  154.      * (non-Javadoc)  
  155.      * @see com.flysoft.dozen.support.jxl.IExcelWritableWorkbook#getWorksheet(java.lang.String)  
  156.      */  
  157.     public List getWorksheet(String sheetName)   
  158.     {   
  159.         return this.getWorksheet(sheetName, null);   
  160.     }   
  161.   
  162.     /*  
  163.      * (non-Javadoc) </spa>
分享到:
评论

相关推荐

    JExcel2.0-API

    JExcel2.0的API文档 自己根据官方文档制作,供有兴趣的朋友分享

    jexcel api,jxl 源代码

    jxl,通过java操作excel表格的工具类库。这是jxl的源代码和jar。jxl全称jexcel。官方版。

    jexcel api

    jxl jexce api jxl jexce api

    JExcel API

    在java程序中操作Excel的API

    jexcel+api.rar

    java 处理excel工具,用于读取Excel内容,并进行必要的处理-java processing excel tool for Excel to read the content and the necessary processing

    jExcel学习帮助文档

    jExcel学习,如果在你的项目中需要解析 Excel 文件,比如,作为用户上传的模板进行解析。那么选择 jExcel 将是一个不错的决定!虽然 Apache 的 Commons 开源组件包 POI 也能完成相同的功能,但 jExcel 小巧、对中文...

    JExcelAPI

    JExcelAPI java 用于操作excel的一些API JAr包

    JExcel_API_2_6_12

    jxl.jar的API文档。更详细内容,可下载后查看。

    jexcel java操作excel

    Java Excel是一开放源码项目,通过它Java...使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。

    jExcel实现

    jExcel具体实现

    JExcel的.Net实现

    Java开源Excel读写库JExcel的.Net实现,在JExcel基础上改写,可以不需要Excel程序就能读写Excel文件。

    JExcel 实用指南

    JExcel 实用指南(英),实用开发指南

    jexcel 资源包下载 当前js版本为 v4.10.1

    可以从excel复制并直接粘贴到jExcel CE电子表格,反之亦然。 很容易集成任何第三方JavaScript插件来创建您自己的自定义列、自定义编辑器,并在应用程序中自定义任何特性。 jexcelce通过其本机列类型有很多不同的输入...

    jexcel 导出excel文件的demo

    jexcel导出excel文件的demo。版本是6.120.包括读取excel,创建新excel,复制excel三个,其中创建excel又分为普通信息,数字,时间,格式化信息,格式化数值,格式化时间等等,有设置单元格大小,单元格样式,单元格...

    JExcel-1.7

    jexcel-1.7-windows-32_64-bit,JExcel 1.7版本,支持32和64位。

    jexcel.zip

    jexcel.js是一款轻量级的类似Excel的jquery电子表格插件。你可以同js数组、json数据或CSV文件来为jexcel表格提供数据,你甚至可以直接从一个Excel表格中直接复制粘贴数据到jexcel表格中。

    jxls-jexcel-1.0.6.jar

    jxls-jexcel-1.0.6.jar java读取excel文件的jarjxls-jexcel-1.0.6.jar

    jexcel所需jar包

    Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。

    jexcel-master

    jexcel (衍生金融工具从Java和Excel )图书馆提供了一个有效的方法,整合到以MS Excel的Java应用得如火如荼。您可以轻松地读,写,创建,修改或展示女士Excel工作簿使用一个全面的Java Excel中的空气污染指数。它的...

    jexcelapi_2_6_8带示例源码

    jxl JEXCEL java excel api 很好用的相当实用 帮助学习

Global site tag (gtag.js) - Google Analytics