java操作Excel

来源:互联网 发布:java发展前景大不大 编辑:程序博客网 时间:2024/06/07 22:34


java操作Excel使用 jxl.jar 包

单元格操作

Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI

提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。

1、 合并单元格

Java代码

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

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、 行高和列宽

Java代码

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

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还有其他的一些功能,比如插入图片等,这里就不再一一介绍,读者可以自己探索。

其中:如果读一个excel,需要知道它有多少行和多少列,如下操作:

Java代码

Workbook book = Workbook.getWorkbook( new File( " 测试1.xls " ));

// 获得第一个工作表对象

Sheet sheet = book.getSheet( 0 );

// 得到第一列第一行的单元格

int columnum = sheet.getColumns(); // 得到列数

int rownum = sheet.getRows(); // 得到行数

System.out.println(columnum);

System.out.println(rownum);

for ( int i = 0 ; i < rownum; i ++ ) // 循环进行读写

{

for ( int j = 0 ; j < columnum; j ++ ) {

Cell cell1 = sheet.getCell(j, i);

String result = cell1.getContents();

System.out.print(result);

System.out.print( " \t " );

}

System.out.println();

}

book.close();

Workbook book = Workbook.getWorkbook( new File( " 测试1.xls " ));

// 获得第一

个工作表对象

Sheet sheet = book.getSheet( 0 );

// 得到第一列第一行的单元格

int columnum = sheet.getColumns(); // 得到列数

int rownum = sheet.getRows(); // 得到行数

System.out.println(columnum);

System.out.println(rownum);

for ( int i = 0 ; i < rownum; i ++ ) // 循环进行读写

{

for ( int j = 0 ; j < columnum; j ++ ) {

Cell cell1 = sheet.getCell(j, i);

String result = cell1.getContents();

System.out.print(result);

System.out.print( " \t " );

}

System.out.println();

}

book.close();

下面是一个完成代码

import jxl.*;

import jxl.write.*;

import java.io.*;

public static void main(String[] args){

String targetfile = "d:/out.xls " ; //输出的excel文件名

String worksheet = "List" ; //输出的excel文件工作表名

String[] title = {"ID\012ID2" , "NAME" , "DESCRIB" }; //excel工作表的标题

WritableWorkbook workbook;

try

{

//创建可写入的Excel工作薄,运行生成的文件在tomcat/bin下

//workbook = Workbook.createWorkbook(new File("output.xls"));

System.out.println("begin" );

OutputStream os = new FileOutputStream(targetfile);

workbook = Workbook.createWorkbook(os);

WritableSheet sheet = workbook.createSheet(worksheet, 0 ); //添加第一个工作表

//WritableSheet sheet1 = workbook.createSheet("MySheet1", 1); //可添加第二个工作

/*

jxl.write.Label label = new jxl.write.Label(0, 2, "A label record"); //put a label in cell A3, Label(column,row)

sheet.addCell(label);

*/

jxl.write.Label label;

for( int i= 0 ; i< title.length; i++){

//Label(列号,行号 ,内容 )

label = new jxl.write.Label(i, 0 , title[i]); //put the title in row1

sheet.addCell(label);

}

WritableCellFormat wrappedText = new WritableCellFormat(WritableWorkbook.ARIAL_10_PT);

wrappedText.setWrap(true);// 可换行的label样式

Label label2 = new Label(4, 0, "测试再长一点了呵呵,\012测试。。。", wrappedText); // "\012"强制换行

sheet.addCell(label2);

//下列添加的对字体等的设置均调试通过,可作参考用

//添加数字

jxl.write.Number number = new jxl.write.Number( 3 , 4 , 3.14159 ); //put the number 3.14159 in cell D5

sheet.addCell(number);

//添加带有字型Formatting的对象

jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 10 ,WritableFont.BOLD, true );

jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);

jxl.write.Label labelCF = new jxl.write.Label( 4 , 4 , "文本" ,wcfF);

sheet.addCell(labelCF);

//添加带有字体颜色,带背景颜色 Formatting的对象

jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10 ,WritableFont.BOLD, false ,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);

jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);

wcfFC.setBackground(jxl.format.Colour.BLUE);

jxl.write.Label labelCFC = new jxl.write.Label( 1 , 5 , "带颜色" ,wcfFC);

sheet.addCell(labelCFC);

//添加带有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);

sheet.addCell(labelNF);

//3.添加Boolean对象

jxl.write.Boolean labelB = new jxl.write.Boolean( 0 , 2 , false );

sheet.addCell(labelB);

//4.添加DateTime对象

jxl.write.DateTime labelDT = new jxl.write.DateTime( 0 , 3 , new java.util.Date());

sheet.addCell(labelDT);

//添加带有formatting的DateFormat对象

jxl.write.DateFormat df = new jxl.write.DateFormat( "ddMMyyyyhh: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);

sheet.addCell(labelDTF);

//和宾单元格

//sheet.mergeCells(int col1,int row1,int col2,int row2);//左上角到右下角

sheet.mergeCells(4 , 5 , 8 , 10 ); //左上角到右下角

wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 40 ,WritableFont.BOLD, false ,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);

jxl.write.WritableCellFormat wchB = new jxl.write.WritableCellFormat(wfc);

wchB.setAlignment(jxl.format.Alignment.CENTRE);

labelCFC = new jxl.write.Label( 4 , 5 , "单元合并" ,wchB);

sheet.addCell(labelCFC); //

//设置边框

jxl.write.WritableCellFormat wcsB = new jxl.write.WritableCellFormat();

wcsB.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THICK);

labelCFC = new jxl.write.Labe

l( 0 , 6 , "边框设置" ,wcsB);

sheet.addCell(labelCFC);

workbook.write();

workbook.close();

}catch (Exception e)

{

e.printStackTrace();

}

System.out.println("end" );

Runtime r = Runtime.getRuntime();

Process p = null ;

//String cmd[]={"notepad","exec.java"};

String cmd[] = {"C:\\Program Files\\Microsoft Office\\Office\\EXCEL.EXE" , "out.xls" };

try {

p = r.exec(cmd);

}

catch (Exception e){

System.out.println("error executing: " +cmd[ 0 ]);

}

}

java免费学习资料直播公开课请加老师QQ578024144

java操作Excel使用 jxl.jar 包

单元格操作

Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI

提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。

1、 合并单元格

Java代码

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

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、 行高和列宽

Java代码

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

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还有其他的一些功能,比如插入图片等,这里就不再一一介绍,读者可以自己探索。

其中:如果读一个excel,需要知道它有多少行和多少列,如下操作:

Java代码

Workbook book = Workbook.getWorkbook( new File( " 测试1.xls " ));

// 获得第一个工作表对象

Sheet sheet = book.getSheet( 0 );

// 得到第一列第一行的单元格

int columnum = sheet.getColumns(); // 得到列数

int rownum = sheet.getRows(); // 得到行数

System.out.println(columnum);

System.out.println(rownum);

for ( int i = 0 ; i < rownum; i ++ ) // 循环进行读写

{

for ( int j = 0 ; j < columnum; j ++ ) {

Cell cell1 = sheet.getCell(j, i);

String result = cell1.getContents();

System.out.print(result);

System.out.print( " \t " );

}

System.out.println();

}

book.close();

Workbook book = Workbook.getWorkbook( new File( " 测试1.xls " ));

// 获得第一

个工作表对象

Sheet sheet = book.getSheet( 0 );

// 得到第一列第一行的单元格

int columnum = sheet.getColumns(); // 得到列数

int rownum = sheet.getRows(); // 得到行数

System.out.println(columnum);

System.out.println(rownum);

for ( int i = 0 ; i < rownum; i ++ ) // 循环进行读写

{

for ( int j = 0 ; j < columnum; j ++ ) {

Cell cell1 = sheet.getCell(j, i);

String result = cell1.getContents();

System.out.print(result);

System.out.print( " \t " );

}

System.out.println();

}

book.close();

下面是一个完成代码

import jxl.*;

import jxl.write.*;

import java.io.*;

public static void main(String[] args){

String targetfile = "d:/out.xls " ; //输出的excel文件名

String worksheet = "List" ; //输出的excel文件工作表名

String[] title = {"ID\012ID2" , "NAME" , "DESCRIB" }; //excel工作表的标题

WritableWorkbook workbook;

try

{

//创建可写入的Excel工作薄,运行生成的文件在tomcat/bin下

//workbook = Workbook.createWorkbook(new File("output.xls"));

System.out.println("begin" );

OutputStream os = new FileOutputStream(targetfile);

workbook = Workbook.createWorkbook(os);

WritableSheet sheet = workbook.createSheet(worksheet, 0 ); //添加第一个工作表

//WritableSheet sheet1 = workbook.createSheet("MySheet1", 1); //可添加第二个工作

/*

jxl.write.Label label = new jxl.write.Label(0, 2, "A label record"); //put a label in cell A3, Label(column,row)

sheet.addCell(label);

*/

jxl.write.Label label;

for( int i= 0 ; i< title.length; i++){

//Label(列号,行号 ,内容 )

label = new jxl.write.Label(i, 0 , title[i]); //put the title in row1

sheet.addCell(label);

}

WritableCellFormat wrappedText = new WritableCellFormat(WritableWorkbook.ARIAL_10_PT);

wrappedText.setWrap(true);// 可换行的label样式

Label label2 = new Label(4, 0, "测试再长一点了呵呵,\012测试。。。", wrappedText); // "\012"强制换行

sheet.addCell(label2);

//下列添加的对字体等的设置均调试通过,可作参考用

//添加数字

jxl.write.Number number = new jxl.write.Number( 3 , 4 , 3.14159 ); //put the number 3.14159 in cell D5

sheet.addCell(number);

//添加带有字型Formatting的对象

jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 10 ,WritableFont.BOLD, true );

jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);

jxl.write.Label labelCF = new jxl.write.Label( 4 , 4 , "文本" ,wcfF);

sheet.addCell(labelCF);

//添加带有字体颜色,带背景颜色 Formatting的对象

jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 10 ,WritableFont.BOLD, false ,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);

jxl.write.WritableCellFormat wcfFC = new jxl.write.WritableCellFormat(wfc);

wcfFC.setBackground(jxl.format.Colour.BLUE);

jxl.write.Label labelCFC = new jxl.write.Label( 1 , 5 , "带颜色" ,wcfFC);

sheet.addCell(labelCFC);

//添加带有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);

sheet.addCell(labelNF);

//3.添加Boolean对象

jxl.write.Boolean labelB = new jxl.write.Boolean( 0 , 2 , false );

sheet.addCell(labelB);

//4.添加DateTime对象

jxl.write.DateTime labelDT = new jxl.write.DateTime( 0 , 3 , new java.util.Date());

sheet.addCell(labelDT);

//添加带有formatting的DateFormat对象

jxl.write.DateFormat df = new jxl.write.DateFormat( "ddMMyyyyhh: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);

sheet.addCell(labelDTF);

//和宾单元格

//sheet.mergeCells(int col1,int row1,int col2,int row2);//左上角到右下角

sheet.mergeCells(4 , 5 , 8 , 10 ); //左上角到右下角

wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 40 ,WritableFont.BOLD, false ,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);

jxl.write.WritableCellFormat wchB = new jxl.write.WritableCellFormat(wfc);

wchB.setAlignment(jxl.format.Alignment.CENTRE);

labelCFC = new jxl.write.Label( 4 , 5 , "单元合并" ,wchB);

sheet.addCell(labelCFC); //

//设置边框

jxl.write.WritableCellFormat wcsB = new jxl.write.WritableCellFormat();

wcsB.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THICK);

labelCFC = new jxl.write.Labe

l( 0 , 6 , "边框设置" ,wcsB);

sheet.addCell(labelCFC);

workbook.write();

workbook.close();

}catch (Exception e)

{

e.printStackTrace();

}

System.out.println("end" );

Runtime r = Runtime.getRuntime();

Process p = null ;

//String cmd[]={"notepad","exec.java"};

String cmd[] = {"C:\\Program Files\\Microsoft Office\\Office\\EXCEL.EXE" , "out.xls" };

try {

p = r.exec(cmd);

}

catch (Exception e){

System.out.println("error executing: " +cmd[ 0 ]);

}

}

原创粉丝点击