JXL(Java Excel API)是一个用来动态读写Excel文件的开源框架,利用它可以在任何支持Java的操作系统上动态读写Excel文件。
JXL的主页是:http://www.andykhan.com/jexcelapi/,可以在这里下载到它的最新的版本。
你可以分别通过如下命令
java -jar jxl.jar -xml test.xls
java -jar jxl.jar -cvs test.xls
以xml和cvs格式查看test.xls,这是因为JXL作者实现了一个用来演示的jxl.demo.Demo的类。
当然我们使用JXL主要是用它来动态读写Excel文件。现在就来看看JXL在对Excel的读和写上都提供了那些支持。
先来看看Excel文件中都有写上面对象
1 文件对象 2工作簿对象 3 单元格对象。
相应的在JXL中就有Workbook,Sheet ,Cell 。通过这三个对象我们就可以实现Excel文件的读取工作。
我们先想想一下读取步骤,不管是什么样的Excel操作框架必定都要经历
1选取Excel文件,2选择工作簿,3选择Cell,4读取信息。
那么现在就可以看看JXL中这四步骤如何体现:
//通过Workbook的静态方法getWorkbook选取Excel文件
Workbook workbook = Workbook.getWorkbook(new File("Book1.xls"));
//通过Workbook的getSheet方法选择第一个工作簿(从0开始)
Sheet sheet = workbook.getSheet(0);
//通过Sheet方法的getCell方法选择位置为C2的单元格(两个参数都从0开始)
Cell c2 = sheet.getCell(2,1);
//通过Cell的getContents方法把单元格中的信息以字符的形式读取出来
String stringc2 = c2.getContents();
可以看到正是刚才所说的四个步骤。
我们都知道Excel单元格是有格式的,那么这些信息如何取得。
Cell提供了一个getType方法能够返回单元格的类型信息,同时JXL提供了一个CellType类用来预设Excel中的类型信息,而且JXL提供了一些Cell类的子类用来分别用来表示各种类型的单元格,如LabelCell,NumberCell,DateCell分别表示字符、数值、日期类型的单元格。所以我们可以这样写:
if (c2.getType() == CellType.NUMBER)
{
NumberCell nc = (NumberCell) c2;
numberb2 = nc.getValue();
}
最后不要忘记关闭workbook以释放资源:
workbook.close();
public static String readExcel(String excelFileName) {
// 创建一个list 用来存储读取的内容
Workbook rwb = null;
Cell cell = null;
String str = "";
try {
// 创建输入流
InputStream stream = new FileInputStream(excelFileName);
// 获取Excel文件对象
rwb = Workbook.getWorkbook(stream);
// 获取文件的指定工作表 默认的第一个
Sheet sheet = rwb.getSheet(0);
for (int i = 0; i < sheet.getRows(); i++) {
// 获取 第一列的所有值
cell = sheet.getCell(0, i);
//得到单元个的数据类型
System.out.println("*********8"+cell.getType());
str +=cell.getContents();
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
// 返回值集合
return str;
}
public static void writeExcel() {
//第一步是创建一个工作簿可写上使用Workbook类的工厂方法
WritableWorkbook workbook;
try {
//G:\\Book1.xls需存在
workbook = Workbook.createWorkbook(new File("G:\\Book1.xls"));
//创建在第一个位置称为“第一单”一表。
WritableSheet sheet = workbook.createSheet("First Sheet", 0);
//下面的代码片段放在一个单元格A3中的标签,
Label label = new Label(0, 2, "A label record");
sheet.addCell(label);
//并在单元格D5数字3.14159。
jxl.write.Number number = new jxl.write.Number(3, 4, 3.1459);
System.out.println("******************************"+number);
sheet.addCell(number);
//一旦你添加完表和单元格到工作簿,您调用write()的工作簿,然后关闭该文件。这最后一步产生的输出文件(在此情况下output.xls),它可能是由Excel读取。如果你调用close(不调用的write())第一,一个完全空白的文件将被生成。
workbook.write();
workbook.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
JExcelApi的版本可以读取本地文件系统或从输入流中存储的文件,Excel电子表格。阅读的第一步从一个文件或电子表格输入流创建一个工作簿。下面的代码片段演示如何创建一个从文件在本地文件系统的工作簿。
Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
(注意:当创建一个从ServletInputStream您必须删除在创建Workbook对象的HTTP头信息的电子表格。)一旦您访问工作簿,您可以用它来访问单个表。这些都是零索引 - 第一个表为0,第二页为1,依此类推。 (您也可以使用API来检索按名称表)。
Sheet sheet = workbook.getSheet(0);
一旦你有一个表,然后你可以进入细胞。您可以通过使用检索方便的方法getContents()作为字符串单元格的内容。在下面的示例代码,A1是一个文本单元,数值为B2和C2是一个日期。这些细胞可以访问的内容如下
Cell a1 = sheet.getCell(0,0);
Cell b2 = sheet.getCell(1,1);
Cell c2 = sheet.getCell(2,1);
String stringa1 = a1.getContents();
String stringb2 = b2.getContents();
String stringc2 = c2.getContents();
演示程序CSV.java和XML.java使用便捷方法getContents()为了输出电子表格的内容。但是,如果它是需要访问的确切类型,即单元格的内容。作为一个数值或一个日期,然后检索细胞必须被强制转换为正确的类型和适当的方法调用。下面的代码段说明了如何JExcelApi的版本,可用于检索一个真正的Java双和java.util.Date从Excel电子表格对象。为了完整的标签也转换为它的正确的类型,虽然在实践中,这没有什么区别。这个例子还说明如何确认预期的细胞类型 - 这可能是有用的电子表格时,已确认在正确的位置细胞。
String stringa1 = null;
double numberb2 = 0;
Date datec2 = null;
Cell a1 = sheet.getCell(0,0);
Cell b2 = sheet.getCell(1,1);
Cell c2 = sheet.getCell(2,1);
if (a1.getType() == CellType.LABEL)
{
LabelCell lc = (LabelCell) a1;
stringa1 = lc.getString();
}
if (b2.getType() == CellType.NUMBER)
{
NumberCell nc = (NumberCell) b2;
numberb2 = nc.getValue();
}
if (c2.getType() == CellType.DATE)
{
DateCell dc = (DateCell) c2;
datec2 = dc.getDate();
}
当您完成处理所有的细胞,使用close()方法。这将释放分配的内存时使用任何电子表格和阅读是阅读时特别重要的大型电子表格。
workbook.close();
写作电子表格
电子表格基础写作本节介绍如何写出不带任何格式信息的简单的电子表格数据,如字体或小数。同样地阅读电子表格,第一步是创建一个工作簿可写上使用Workbook类的工厂方法。
import java.io.File;
import java.util.Date;
import jxl.*;
import jxl.write.*;
...
WritableWorkbook workbook = Workbook.createWorkbook(new File("output.xls"));
这将创建工作簿对象。生成的文件将位于当前工作目录,称为“output.xls”。该API还可以用来传送工作簿,直接到输出流,例如。从Web服务器到用户的浏览器。如果HTTP头设置正确,那么这将启动Excel并显示生成的电子表格。下一阶段是创建工作簿表。再次,这是一个工厂方法,该方法的工作表和位置,将占据在工作簿的名称。下面的代码片断创建在第一个位置称为“第一单”一表。
WritableSheet sheet = workbook.createSheet("First Sheet", 0);
现在,所有剩下的工作就是添加到工作表的单元格。这是一个简单的实例单元格对象并将它们添加到工作表的问题。下面的代码片段放在一个单元格A3中的标签,并在单元格D5数字3.14159。
Label label = new Label(0, 2, "A label record");
sheet.addCell(label);
Number number = new Number(3, 4, 3.1459);
sheet.addCell(number);
这里有两点需要注意这里。首先,细胞的表中的位置被指定为构造函数的信息的一部分。一旦创建,它是无法改变一个单元格的位置,尽管单元格的内容可能被改变。另一点要注意的是,该单元格的位置指定为(列,行)。两者都是零的整数索引值 - A1的正代表(0,0),B1的(1,0),由(0,1),A2和等。一旦你添加完表和单元格到工作簿,您调用write()的工作簿,然后关闭该文件。这最后一步产生的输出文件(在此情况下output.xls),它可能是由Excel读取。如果你调用close(不调用的write())第一,一个完全空白的文件将被生成。
...
// All sheets and cells added. Now write out the workbook
workbook.write();
workbook.close();
添加格式信息上一节说明生成一个Excel兼容的电子表格使用JExcelApi的版本的基础知识。然而,由于它代表Excel将默认的字体呈现的数据,并会显示数字为3位小数。为了提供格式信息到Excel,我们必须重载的构造函数,它带有一个额外的对象包含该单元格的格式信息(包括字体和样式)的使用。下面的代码片段演示如何创建一个为新细明体10点字体标记细胞。
// Create a cell format for Arial 10 point font
WritableFont arial10font = new WritableFont(WritableFont.ARIAL, 10);
WritableCellFormat arial10format = new WritableCellFormat (arial10font);
// Create the label, specifying content and format
Label label2 = new Label(1,0, "Arial 10 point label", arial10format);
sheet.addCell(label2);
单元格格式对象是共享的,所以许多细胞可能使用相同的格式对象,例如。
Label label3 = new Label(2, 0, "Another Arial 10 point label", arial10format);
sheet.addCell(label3);
这将创建另一个具有相同格式的标签,在单元格C1。因为细胞格式共享,这是不可能改变一个单元格的格式对象的内容。 (如果这是允许的,然后改变对象的内容可以对工作簿的其他人看起来意外repurcussions)。为了改变的一个特定的单元格显示,该API允许您指定一个新的格式,单个单元格的方式。为WritableFont对象的构造有很多重载。通过举例来说,下面的代码片段中创建一个标签时报16点,粗体斜体并将其分配给D1的位置。
// Create a cell format for Times 16, bold and italic
WritableFont times16font = new WritableFont(WritableFont.TIMES, 16, WritableFont.BOLD, true);
WritableCellFormat times16format = new WritableCellFormat (times16font);
// Create the label, specifying content and format
Label label4 = new Label(3,0, "Times 16 bold italic label", times16format);
sheet.addCell(label4);
分享到:
相关推荐
在了解如何使用Excel读取Kepware DDE Server数据之前,我们首先需要掌握一些基础知识点。这些知识包括DDE(动态数据交换)的基本概念、Kepware DDE Server的作用、以及如何配置KepServerEx以启用DDE连接。 DDE是一...
总的来说,C#中导入Excel读取图片的方法主要分为使用.NET Interop组件和第三方库如EPPlus。选择哪种方法取决于项目需求,如性能、兼容性、是否依赖Office等因素。对于图片上传,通常还会涉及文件流处理、网络传输等...
本文将详细讲解如何使用Excel读取数据,以及相关知识点。 首先,我们需要了解Excel文件的基本结构。Excel文件通常以.xlsx或.xls为扩展名,其中存储了表格数据、公式、图表和格式设置等信息。在编程环境中读取Excel...
Excel 读取 读取Excel到Dataset中
在IT领域,Excel读取源码通常指的是编程中用于解析、操作或提取Excel文件内容的代码。Excel文件格式,特别是.xlsx格式,是基于Open XML标准,由一系列XML文档组成,可以使用不同的编程语言来处理。以下是一些关于...
"Unity3D跨平台Excel读取插件"就是为了满足这种需求而设计的。 这个插件允许开发者在Unity3D项目中直接读取Excel文件,无论是在Windows、Mac还是Linux平台上,都能无缝工作。这极大地提高了开发效率,避免了手动...
本资源包集合了使用Java进行Excel读取、写入等操作所需的全部jar文件,且这些jar文件已更新至最新版本,支持Excel 2013的格式。以下是对这些操作的详细说明: 一、读取Excel 1. 导入必要的POI库:首先,你需要导入...
标题中的“tdms.rar_excel_excel读取tdms_labview_labview读取Excel_tdms excel”表明这个压缩包涉及到了TDMS(Test Data Management System)文件、Excel电子表格以及LabVIEW编程环境之间的数据交互。TDMS是由NI...
在LabVIEW中实现Excel读取,主要依赖于VI(Virtual Instrument)库中的“Microsoft Excel API”或者“Spreadsheet File Library”。下面我们将详细介绍这两个方法: 1. **Microsoft Excel API**:LabVIEW可以通过...
本篇将详细讲解如何利用Java的开源库Apache POI,结合反射机制,通过ExcelUtil工具类简化Excel读取的过程。 Apache POI是一个强大的库,它允许Java程序员创建、修改和展示MS Office格式的文件,包括Excel。在传统的...
本文将详细介绍如何通过Excel读取数据并生成XML文件,以实现数据的标准化存储和传输。 首先,我们需要了解Excel如何读取数据。Excel提供了丰富的函数和公式,可以方便地对单元格中的数据进行操作。例如,VLOOKUP...
"php-excel读取插件" 提供了一种方便的方式来读取和操作Excel文件,无需依赖Microsoft Office或者安装额外的桌面软件。本文将详细介绍如何使用php-excel读取插件以及相关的技术要点。 首先,我们要明确的是,...
标题中的“易语言对象excel读取MDB数据库”指的是使用易语言这一编程工具,通过对象操作的方式,实现对Excel文件的数据读取,并与MDB(Access数据库)进行交互的技术。易语言是一种面向对象、易于学习和使用的中文...
在这种情况下,我们可以利用编程语言中的库或工具来实现“不装Excel读取Excel”的目标。本文将详细介绍如何在不安装Excel的情况下,通过Python的pandas库来读取Excel文件。 Python的pandas库是一个强大的数据处理...
本文主要介绍如何使用Excel的VBA(Visual Basic for Applications)语言来读取通达信(TDX)股票日线数据,以便进行定量分析。通达信是一款广泛使用的股票行情软件,其日线数据文件包含了股票的历史交易信息,如开盘...
在IT领域,尤其是在软件开发中,常常需要与各种数据格式打交道,Excel作为广泛...以上就是关于"EXCEL读取并保存"这个项目所涉及的核心技术点,理解并掌握这些知识点,有助于在实际开发中实现对Excel文件的高效操作。
这里提到的“三个Excel读取必备Dll文件”指的是`Excel.dll`和`ICSharpCode.SharpZipLib.dll`,它们可以帮助我们实现这一目标。 首先,`Excel.dll`通常是一个用于读写Excel文件的库,它可能封装了对Microsoft Office...
1. **Excel读取**: 使用EPPlus,首先需要安装NuGet包`EPPlus`。在C#代码中,你可以创建一个`FileInfo`对象来指定Excel文件路径,然后用它来初始化`ExcelPackage`实例。例如: ```csharp FileInfo fileInfo = new...
首先,要从Excel读取数据,我们需要引入一个能够处理Excel文件的库。在.NET Framework中,可以使用Microsoft.Office.Interop.Excel组件,它允许我们直接与Excel应用程序进行交互。然而,这需要在运行环境中安装...
excel读取10种用法功能.zip源码Labview个人项目资料程序资源下载excel读取10种用法功能.zip源码Labview个人项目资料程序资源下载excel读取10种用法功能.zip源码Labview个人项目资料程序资源下载excel读取10种用法...