java操作excel表

python 表格使用 例一 从表格中读出关键字,模拟浏览器搜索,将搜索到的关键字存入表格指定位置中。 ''' 参考资料:https://www.cnblogs.com/insane-Mr-Li/p/9092619.html https://www.cnblogs.com/machangwei-8/p/10739115.html ''' from selenium import webdriver import ... 阅读详情

文章分类:Java编程

http://developers.sun.com.cn/blog/functionalca/entry/java读写excel简介

JAVA 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);
? 支持字体、数字、日期的格式化;
? 支持单元格的阴影操作,以及颜色操作;
? 修改已经存在的数据表;
? 现在还不支持以下功能,但不久就会提供了:
? 不能够读取图表信息;

可以读,但是不能生成公式,任何类型公式最后的计算值都可以读出;
应用示例
从Excel文件读取数据表
Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。读取Excel数据

表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:(完整代码见

ExcelReading.java)

 

import java.io.*;
import jxl.*;
… … … …
try
{
//构建Workbook对象, 只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook
InputStream is = new FileInputStream(sourcefile);
jxl.Workbook rwb = Workbook.getWorkbook(is);
}
catch (Exception e)
{
e.printStackTrace();
}

 

  一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。参考下面的代码片段:
//获取第一张Sheet表
Sheet rs = rwb.getSheet(0);
  我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,要注意的一点

是下标从0开始,就像数组一样。
  一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。参考下面的代码片段:
//获取第一行,第一列的值
Cell c00 = rs.getCell(0, 0);
String strc00 = c00.getContents();
//获取第一行,第二列的值
Cell c10 = rs.getCell(1, 0);
String strc10 = c10.getContents();
//获取第二行,第二列的值
Cell c11 = rs.getCell(1, 1);
String strc11 = c11.getContents();
System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " +
c00.getType());
System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " +
c10.getType());
System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " +
c11.getType());
  如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,它可以将任何类型的Cell值都作为一个

字符串返回。示例代码中Cell(0, 0)是文本型,Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents()

,三种类型的返回值都是字符型。
  如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。参考下面的代码片段:
String strc00 = null;
double strc10 = 0.00;
Date strc11 = null;
Cell c00 = rs.getCell(0, 0);
Cell c10 = rs.getCell(1, 0);
Cell c11 = rs.getCell(1, 1);
if(c00.getType() == CellType.LABEL)
{
LabelCell labelc00 = (LabelCell)c00;
strc00 = labelc00.getString();
}
if(c10.getType() == CellType.NUMBER)
{
NmberCell numc10 = (NumberCell)c10;
strc10 = numc10.getValue();
}
if(c11.getType() == CellType.DATE)
{
DateCell datec11 = (DateCell)c11;
strc11 = datec11.getDate();
}
System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " +
c00.getType());
System.out.println("Cell(1, 0)" + " value : " + strc10 + "; type : " +
c10.getType());
System.out.println("Cell(1, 1)" + " value : " + strc11 + "; type : " +
c11.getType());
  在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API提供的基本类型相匹配,强制

转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。API提供了以下基本类型,与

Excel的数据格式相对应。
每种类型的具体意义,请参见Java Excel API Document。
当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的

过程中所占用的内存空间,在读取大量数据时显得尤为重要。参考如下代码片段:
//操作完成时,关闭对象,释放占用的内存空间
rwb.close();
Java Excel API提供了许多访问Excel数据表的方法,在这里我只简要地介绍几个常用的方法,其它的方法请参考

附录中的Java Excel API Document。

 

? 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);

 

生成新的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电子表格。
  接下来就是要创建工作表,创建工作表的方法与创建工作薄的方法几乎一样,同样是通过工厂模式方法获得

相应的对象,该方法需要两个参数,一个是工作表的名称,另一个是工作表在工作薄中的位置,参考下面的代码

片段:
file://创建Excel工作表
jxl.write.WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
  "这锅也支好了,材料也准备齐全了,可以开始下锅了!",现在要做的只是实例化API所提供的Excel基本数

据类型,并将它们添加到工作表中就可以了,参考下面的代码片段:
file://1/.添加Label对象
jxl.write.Label labelC = new jxl.write.Label(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);
jxl.write.Label labelCF = new jxl.write.Label(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);
jxl.write.Label labelCFC = new jxl.write.Label(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);
ws.addCell(labelN);
//添加带有formatting的Number对象
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
jxl.write.WritableCellFormat wcfN = new jxl.write.WritableCellFormat(nf);
jxl.write.Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN);
ws.addCell(labelNF);
//3.添加Boolean对象
jxl.write.Boolean labelB = new jxl.write.Boolean(0, 2, false);
ws.addCell(labelB);
//4.添加DateTime对象
jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3, new java.util.Date());
ws.addCell(labelDT);
//添加带有formatting的DateFormat对象
jxl.write.DateFormat df = new jxl.write.DateFormat("dd MM yyyy hh:mm:ss");
jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
jxl.write.DateTime labelDTF = new jxl.write.DateTime(1, 3, new java.util.Date(), wcfDF);
ws.addCell(labelDTF);
  这里有两点大家要引起大家的注意。第一点,在构造单元格时,单元格在工作表中的位置就已经确定了。一

旦创建后,单元格的位置是不能够变更的,尽管单元格的内容是可以改变的。第二点,单元格的定位是按照下面

这样的规律(column, row),而且下标都是从0开始,例如,A1被存储在(0, 0),B1被存储在(1, 0)。
  最后,不要忘记关闭打开的Excel工作薄对象,以释放占用的内存,参见下面的代码片段:
file://写入Exel工作表
wwb.write();
//关闭Excel工作薄对象
wwb.close();
  这可能与读取Excel文件的操作有少少不同,在关闭Excel对象之前,你必须要先调用write()方法,因为先前

的操作都是存储在缓存中的,所以要通过该方法将操作的内容保存在文件中。如果你先关闭了Excel对象,那么只

能得到一张空的工作薄了。
拷贝、更新Excel工作薄
  接下来简要介绍一下如何更新一个已经存在的工作薄,主要是下面二步操作,第一步是构造只读的Excel工作

薄,第二步是利用已经创建的Excel工作薄创建新的可写入的Excel工作薄,参考下面的代码片段:(完整代码见

ExcelModifying.java)
file://创建只读的Excel工作薄的对象
jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile));
//创建可写入的Excel工作薄对象
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile), rw);
//读取第一张工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);
//获得第一个单元格对象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//判断单元格的类型, 做出相应的转化
if(wc.getType() == CellType.LABEL)
{
Label l = (Label)wc;
l.setString("The value has been modified.");
}
//写入Excel对象
wwb.write();
//关闭可写入的Excel对象
wwb.close();
//关闭只读的Excel对象
rw.close();
  之所以使用这种方式构建Excel对象,完全是因为效率的原因,因为上面的示例才是API的主要应用。为了提

高性能,在读取工作表时,与数据相关的一些输出信息,所有的格式信息,如:字体、颜色等等,是不被处理的

,因为我们的目的是获得行数据的值,既使没有了修饰,也不会对行数据的值产生什么影响。唯一的不利之处就

是,在内存中会同时保存两个同样的工作表,这样当工作表体积比较大时,会占用相当大的内存,但现在好像内

存的大小并不是什么关键因素了。
  一旦获得了可写入的工作表对象,我们就可以对单元格对象进行更新的操作了,在这里我们不必调用API提供

的add()方法,因为单元格已经于工作表当中,所以我们只需要调用相应的setXXX()方法,就可以完成更新的操作

了。
  尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去,以使单元格的内容以不

同的形式表现。
  新生成的工作表对象是可写入的,我们除了更新原有的单元格外,还可以添加新的单元格到工作表中,这与

示例2的操作是完全一样的。
  最后,不要忘记调用write()方法,将更新的内容写入到文件中,然后关闭工作薄对象,这里有两个工作薄对

象要关闭,一个是只读的,另外一个是可写入的。

 

  下面是在一个Excel表格中创建一个矩阵的简单例子:
import org.apache.poi.hssf.usermodel.*;
import java.io.FileOutputStream;

 


// code run against the jakarta-poi-1.5.0-FINAL-20020506.jar.
public class PoiTest {
static public void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("foo.xls");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet();
wb.setSheetName(0, "Matrix");
for(short i=0; i<50; i++) {
HSSFRow row = s.createRow(i);
for(short j=0; j<50; j++) {
HSSFCell cell = row.createCell(j);
cell.setCellValue(""+i+","+j);
}
}
wb.write(fos);
fos.close();
}
}
这段代码首先创建一个Workbook,从该Workbook中得到一个表格、命名,然后继续写入一个50x50的矩阵。最后输

出到一个名为foo.xls的Excel文件,甚至在Apple Mac机上也可以打开。
POI项目是Java应用的令人兴奋的一步,为用户提供了Windows文档集成的新功能,允许Java开发人员方便地扩展

其产品的功能。

///////////////////////////////////////////////////////////////////////////////////////////////////
在Java中读取Excel文件的内容

在这里,我使用的是一个叫Java Excel API的东西,类似的还有jakarta的POI,不过感觉那个
太复杂了点儿。而且jxl对中文的支持相当的好,至少我在用的过程中一点问题没出。

一、下载地址
http://www.andykhan.com/jexcelapi/

二、特性
可以读取Excel 95, 97, 2000文件
可以读或写Excel 97及其以后版本的的公式(不过我发现好像有bug)
生成Excel 97格式的电子表格
支持字体、数字和日期格式化
支持单元格的颜色和阴影
可以编辑现有的文件

三、读文件
//声明一下,记得后面要关闭哦。。
Workbook workbook = null;

try {
    workbook = Workbook.getWorkbook(new File("d://temp//TestRead.xls"));
} catch (Exception e) {
    throw new Exception("file to import not found!");
}

Sheet sheet = workbook.getSheet(0);
Cell cell = null;

int columnCount=3;
int rowCount=sheet.getRows();
for (int i = 0; i <rowCount; i++) {
    for (int j = 0; j <columnCount; j++) {
        //注意,这里的两个参数,第一个是表示列的,第二才表示行
        cell=sheet.getCell(j, i);
        //要根据单元格的类型分别做处理,否则格式化过的内容可能会不正确
        if(cell.getType()==CellType.NUMBER){
            System.out.print(((NumberCell)cell).getValue());
        }
        else if(cell.getType()==CellType.DATE){
            System.out.print(((DateCell)cell).getDate());
        }
        else{
            System.out.print(cell.getContents());
        }
       
        //System.out.print(cell.getContents());
        System.out.print("/t");
    }
    System.out.print("/n");
}
//关闭它,否则会有内存泄露
workbook.close();


在Java中向Excel文件写入内容


四、导出数据到Excel文件中
下面的例子,设置了数字、日期的格式,还有字体,颜色等。

File tempFile=new File("d:/temp/output.xls");
WritableWorkbook workbook = Workbook.createWorkbook(tempFile);
WritableSheet sheet = workbook.createSheet("TestCreateExcel", 0);

//一些临时变量,用于写到excel中
Label l=null;
jxl.write.Number n=null;
jxl.write.DateTime d=null;

//预定义的一些字体和格式,同一个Excel中最好不要有太多格式
WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLUE);
WritableCellFormat headerFormat = new WritableCellFormat (headerFont);

WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
WritableCellFormat titleFormat = new WritableCellFormat (titleFont);

WritableFont detFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK);
WritableCellFormat detFormat = new WritableCellFormat (detFont);

NumberFormat nf=new NumberFormat("0.00000"); //用于Number的格式
WritableCellFormat priceFormat = new WritableCellFormat (detFont, nf);

DateFormat df=new DateFormat("yyyy-MM-dd");//用于日期的
WritableCellFormat dateFormat = new WritableCellFormat (detFont, df);

//剩下的事情,就是用上面的内容和格式创建一些单元格,再加到sheet中
l=new Label(0, 0, "用于测试的Excel文件", headerFormat);
sheet.addCell(l);

//add Title
int column=0;
l=new Label(column++, 2, "标题", titleFormat);
sheet.addCell(l);
l=new Label(column++, 2, "日期", titleFormat);
sheet.addCell(l);
l=new Label(column++, 2, "货币", titleFormat);
sheet.addCell(l);
l=new Label(column++, 2, "价格", titleFormat);
sheet.addCell(l);

//add detail
int i=0;
column=0;
l=new Label(column++, i+3, "标题 "+i, detFormat);
sheet.addCell(l);
d=new DateTime(column++, i+3, new java.util.Date(), dateFormat);
sheet.addCell(d);
l=new Label(column++, i+3, "CNY", detFormat);
sheet.addCell(l);
n=new jxl.write.Number(column++, i+3, 5.678, priceFormat);
sheet.addCell(n);

i++;
column=0;
l=new Label(column++, i+3, "标题 "+i, detFormat);
sheet.addCell(l);
d=new DateTime(column++, i+3, new java.util.Date(), dateFormat);
sheet.addCell(d);
l=new Label(column++, i+3, "SGD", detFormat);
sheet.addCell(l);
n=new jxl.write.Number(column++, i+3, 98832, priceFormat);
sheet.addCell(n);

//设置列的宽度
column=0;
sheet.setColumnView(column++, 20);
sheet.setColumnView(column++, 20);
sheet.setColumnView(column++, 10);
sheet.setColumnView(column++, 20);

workbook.write();
workbook.close();
///////////////////////////////////////////////////////////////////////////////////////////////////
Java操作Excel的一种方法

bromon原创 版权所有

  MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式。作为办公文档,势必要涉及到的电子文档的交换,Excel是一种在企业中非常通用的文件格式,打印和管理也比较方便。在一个Java应用中,将一部分数据生成Excel格式,是与其他系统无缝连接的重要手段。

  在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中jExcelAPI是一个韩国程序员的作品,虽然没有POI那样血统高贵,但是在笔者的使用过程中,感觉简单方便,对中文支持非常好,功能也比较强大。可以在sourceforge.net下载。作者的网站上对它的特征有如下描述:

● 支持Excel 95-2000的所有版本
● 生成Excel 2000标准格式
● 支持字体、数字、日期操作
● 能够修饰单元格属性
● 支持图像和图表

  应该说以上功能已经能够大致满足我们的需要。最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

  搭建环境

  将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。

基本操作

一、创建文件

拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:

 

代码(CreateXLS.java):


//生成Excel的类
import java.io.*;
import jxl.*;
import jxl.write.*;

public class CreateXLS
{
  public static void main(String args[])
  {
  try
  {
    //打开文件
    WritableWorkbook book=Workbook.createWorkbook(new File(“测试.xls”));
     
    //生成名为“第一页”的工作表,参数0表示这是第一页
    WritableSheet sheet=book.createSheet(“第一页”,0);
   
    //在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
    //以及单元格内容为test
    Label label=new Label(0,0,”test”);

    //将定义好的单元格添加到工作表中
    sheet.addCell(label);

    /**生成一个保存数字的单元格
    *必须使用Number的完整包路径,否则有语法歧义
    *单元格位置是第二列,第一行,值为789.123
    */
    jxl.write.Number number = new jxl.write.Number(1,0,789.123);
    sheet.addCell(number);

    //写入数据并关闭文件
    book.write();
    book.close();

    }catch(Exception e)
    {
      System.out.println(e);
    }
  }
}

编译执行后,会在当前位置产生一个Excel文件。

三、读取文件

以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:


//读取Excel的类
import java.io.*;
import jxl.*;

public class ReadXLS
{
public static void main(String args[])
{
try
{
   Workbook book=
Workbook.getWorkbook(new File(“测试.xls”));
   
   //获得第一个工作表对象
Sheet sheet=book.getSheet(0);

//得到第一列第一行的单元格
Cell cell1=sheet.getCell(0,0);
String result=cell1.getContents();
System.out.println(result);

book.close();

}catch(Exception e)
{
   System.out.println(e);
}
}
}


程序执行结果:test
四、修改文件

利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:


//修改Excel的类,添加一个工作表
import java.io.*;
import jxl.*;
import jxl.write.*;

public class UpdateXLS
{
public static void main(String args[])
{
try
{
   //Excel获得文件
   Workbook wb=Workbook.getWorkbook(new File(“测试.xls”));
   
   //打开一个文件的副本,并且指定数据写回到原文件
WritableWorkbook book=
Workbook.createWorkbook(new File(“测试.xls”),wb);
   
   //添加一个工作表
   WritableSheet sheet=book.createSheet(“第二页”,1);

   sheet.addCell(new Label(0,0,”第二页的测试数据”));
   
   book.write();
   book.close();
}catch(Exception e)
{
   System.out.println(e);
}
}
}

执行结果如图:

 

高级操作

一、 数据格式化

在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用。

1、 字串格式化

字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句,为方便叙述,我们为每一行命令加了编号:



WritableFont font1=
new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD); ①

WritableCellFormat format1=new WritableCellFormat(font1); ②

Label label=new Label(0,0,”data 4 test”,format1) ③


其中①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。

②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化中会有更多描述。

③处使用了Label类的构造子,指定了字串被赋予那种格式。

在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们上面的实例,可以指定:


//把水平对齐方式指定为居中
format1.setAlignment(jxl.format.Alignment.CENTRE);



//把垂直对齐方式指定为居中
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);


二、单元格操作

Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。

1、 合并单元格


WritableSheet.mergeCells(int m,int n,int p,int q);


作用是从(m,n)到(p,q)的单元格全部合并,比如:

WritableSheet sheet=book.createSheet(“第一页”,0);


//合并第一列第一行到第六列第一行的所有单元格
sheet.mergeCells(0,0,5,0);


合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。

2、 行高和列宽


WritableSheet.setRowView(int i,int height);


作用是指定第i+1行的高度,比如:

//将第一行的高度设为200

sheet.setRowView(0,200);

WritableSheet.setColumnView(int i,int width);


作用是指定第i+1列的宽度,比如:

//将第一列的宽度设为30

sheet.setColumnView(0,30);


jExcelAPI还有其他的一些功能,比如插入图片等

POI实现Excel导入导出并附带加载进度条 这是一个Excel表格导入与导出功能,Excel美化,并且添加了进度条,丢上Eclipse直接运行使用,附带测试数据与说明。Java项目使用maven搭建。 立即下载

相关推荐

Java操作Excel表两种方式

Java操作Excel表的两种方式,具体教程可以网上查看,这里只有jar包

JAVA操作Excel表格

一、JExcelApi 可以从文件或者输入流进行读取操作。基本步骤:  1.由文件或者输入流创建一个workbook;  2.由workbook的getSheet()方法创建一个工作表Sheet(两种方法,下标和名字,下标从0开始);  3.由Sheet的getCell(x,y)方法得到某个单元格,cell对象可以读取它的类型(getType)、内容(getContents)等。读取excel表格

面向未来 948

javascript_excel

利用javascript技术把table标签的内容导出成Excel文件

java读取excel文件中数据作为参数循环调用http 的put请求接口

需求背景:这个系统只有单条新增的功能,现在需要把excel文件中的数据大量插入进去,人工操作太费时费力,又没有系统源码,没法直接开发导入的功能,只好采用循环调用http接口的方式进行插入。 需要的maven依赖: <!--读取excel依赖--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId>

my_power520的博客 1365

【计算机组成原理】实验4:单周期CPU(Verilog)中海大

【计算机组成原理】实验4:单周期CPU

m0_63023532的博客 3659

OpenWRT软件源更换保姆级教程:从国内镜像到官方源一键切换(含常见报错解决)

本文提供OpenWRT软件源更换的详细教程,涵盖从国内镜像源到官方源的切换方法,并深度解析常见报错解决方案。针对国内网络环境,指导用户如何精准定位系统信息、备份配置、选择并配置清华等国内镜像源,以及处理签名验证失败、依赖缺失、404错误等典型问题,旨在提升软件包管理效率与稳定性。

weixin_29229261的博客 1931

Excel文件解析方式

将输入流传入Workbook中,使用XSSFWorkbook(Workbook的实现类)。调用该对象的getNumberOfSheets()方法得到工作簿的数量通过getSheet()方法,按照传入的名称获取工作簿,getSheetAt()按照工作簿下标获取工作簿。将输入流传入Workbook中,使用XSSFWorkbook(Workbook的实现类)。 Workbook workbook = new XSSFWorkbook(out);通过createSheet()方法创建工作簿通过Sheet调用

m0_65467013的博客 2013

最全中文停用词表(可直接复制)

最全的停用此表整理 词表名 词表文件 中文停用词表 cn_stopwords.txt 哈工大停用词表 hit_stopwords.txt 百度停用词表 baidu_stopwords.txt 机器智能实验室停用词库 scu_stopwords.txt 以上停用词表链接:https://github.com/goto456/stopwords 以下是我常用的1893个停用词,可直接复制 ! " # $ % & ' ( ) * + , - -- . .. ... ....

dilifish的博客 12万+

java 操作 Excel

因此这两种文件格式的处理方式并不一样。

m0_62056932的博客 2871

【COMSOL】修改内置物理场方程 模拟水沸腾的蒸汽泡运动

在COMSOL中通过弱贡献(weak contribution)节点,可以向任何内置模型方程中添加约束。这里,以模拟水沸腾的蒸汽泡运动为例,来讲一讲当我们研究的方程与模块方程不一样时,应该怎么增加新的贡献项。

u012161192的博客 9005

岭回归的MATLAB步骤

MATLAB 实现框架,它涵盖了从数据导入到岭回归的步骤,包括计算共线性、使用 MAE、MSE、R²、MAPE 进行评价,以及绘制相应的可视化图表。

subject625Ruben的博客 1089

java excel 透视_Java Excel透视表相关操作实现代码

概述透视表是依据已有数据源来创建的交互式表格,我们可在excel中创建透视表,也可编辑已有透视表。所需工具:Free Spire.XLS for Java免费版,编辑代码前,先下载导入jar到Java程序(可手动下载导入,或通过Maven仓库下载导入)。示例代码1. 创建透视表import com.spire.xls.*;public class CreatePivotTable {public ...

weixin_36238706的博客 968

Vivado报错-4 [Routed 35-3424] SLL Assignment failed ILP VU19P

Vivado报错[Routed 35-3424] SLL Assignment failed ILP VU19P

weixin_39896700的博客 1408

java操作mysql导表_java导出数据库的全部表到excel

本文实例为大家分享了java将某个数据库的表全部导出到excel中的方法,供大家参考,具体内容如下第一步:如何用POI操作Excel@Testpublic void createXls() throws Exception{//声明一个工作薄HSSFWorkbook wb = new HSSFWorkbook();//声明表HSSFSheet sheet = wb.createSheet("第一个...

weixin_35875323的博客 495

基于深度学习的三维重建算法——详解与实现

随着深度学习技术的迅猛发展,基于深度学习的三维重建算法在最近几年取得了显著的进展。而基于深度学习的三维重建算法通过利用深度神经网络,能够从大规模数据中学习到更准确、鲁棒的三维结构表示。本文综述了基于深度学习的三维重建算法,并给出了相应的源代码。随着深度学习技术的不断发展,我们相信基于深度学习的三维重建算法将会在未来得到更广泛的应用。实验结果表明,基于深度学习的三维重建算法在准确性和鲁棒性方面取得了显著的提升。以上是关于基于深度学习的三维重建算法的详细介绍与实现,希望对您有所帮助。

CyberGenius的博客 1227

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java封装实现Excel建表读写操作

对 Excel 进行读写操作是生产环境下常见的业务,网上搜索的实现方式都是基于POI和JXL第三方框架,但都不是很全面。小编由于这两天刚好需要用到,于是就参考手写了一个封装操作工具,基本涵盖了Excel表(分有表头和无表头)的创建,并对它们进行读写操作。为方便大家,有需要者可以点击文后点解下载直接使用哦,当然也可以根据自己需求举一反三自己定制,相信对于聪明的你也不是什么难事。话不多说,直接贴源码 ...

yupi1057的博客 1073

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java对excel表操作_Java使用poi进行对Excel的操作

Java使用poi进行对Excel的操作废话不多说,直接进入正题先看看目录结构一、将Excel表中的数据通过List集合打印在就控制台二、将数据库中的数据导入的Excel表中上述两条在这里统一进行实现先导入对应的依赖org.apache.poipoi3.17org.apache.poipoi-ooxml3.17mysqlmysql-connector-java5.1.47compilecom.al...

weixin_39716510的博客 165

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JAVA操作Excel表

操作Excel文件一、需求分析 在项目中,我们时常会遇到需要将数据库中查询出来的数据导出到Excel表中,并下载到本地。

ntc10095的博客 547

java操作Excel表

JAVA编码与Excel的交互在实际开发中用的非常多,今天就简单用jxl实现二者的交互。废话不多说,直接贴码! 首先,得导入jxl架包: 1.将数据写入EX CEL中 package com.easyteam.yc01; import java.io.File; import jxl.Workbook; import jxl.write.Label; import jxl.writ

Action 755

如何用Java对Excel表进行读写操作?

博主公众号: 没有腹肌的程序猿 公众号会不定期更新一些数据集,有需要的可以点点关注哦 如何用Java对Excel表进行读写操作? 1.Java读取Excel表的内容 Java读取Excel表相对来说还是比较简单的,分为3步 首先是先读取文件 再读取Excel表的sheet 最后就是通过循环拿到数据 //使用到的包 import jxl.Sheet; import jxl.Workbook; String path = "";//Excel文件的路径 Workbook wrb = Workbook.ge

Sanmu 8970

Java操作Excel表

项目需要读取类似的Excel表: 。 1.建立Excel表整体对象模型: /******************************************************************************* **************************************************************************

sidihuo的专栏 2913

JAVA操作excel生成Hive表

package Excel_Deal; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList;

健身看书环游世界 421
上一篇: hibernate检索方式
下一篇: java操作excel表
MyJavaBlog
博客等级 码龄16年 11粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值