java实现excel导入导出(2)(转)

java如何操作Excel(数据导入导出)(转) 

jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下载。 

一.读取Excel文件内容 

java 代码 
/**读取Excel文件的内容  
* @param file  待读取的文件  
* @return  
*/  
public static String readExcel(File file){   
    StringBuffer sb = new StringBuffer();   
       
    Workbook wb = null;   
    try {   
        //构造Workbook(工作薄)对象   
        wb=Workbook.getWorkbook(file);   
    } catch (BiffException e) {   
        e.printStackTrace();   
    } catch (IOException e) {   
        e.printStackTrace();   
    }   
       
    if(wb==null)   
        return null;   
       
    //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了   
    Sheet[] sheet = wb.getSheets();   
       
    if(sheet!=null&&sheet.length>0){   
        //对每个工作表进行循环   
        for(int i=0;i 
            //得到当前工作表的行数   
            int rowNum = sheet[i].getRows();   
            for(int j=0;j 
                //得到当前行的所有单元格   
                Cell[] cells = sheet[i].getRow(j);   
                if(cells!=null&&cells.length>0){   
                    //对每个单元格进行循环   
                    for(int k=0;k 
                        //读取当前单元格的值   
                        String cellValue = cells[k].getContents();   
                        sb.append(cellValue+"\t");   
                    }   
                }   
                sb.append("\r\n");   
            }   
            sb.append("\r\n");   
        }   
    }   
    //最后关闭资源,释放内存   
    wb.close();   
    return sb.toString();   
}  
二.写入Excel文件 

这里有很多格式了,比如文本内容加粗,加上某些颜色等,可以参考jxl的api. 
同时还推荐一篇不错的文章:http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10 

java 代码 
/**生成一个Excel文件  
     * @param fileName  要生成的Excel文件名  
     */  
    public static void writeExcel(String fileName){   
        WritableWorkbook wwb = null;   
        try {   
            //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象   
            wwb = Workbook.createWorkbook(new File(fileName));   
        } catch (IOException e) {   
            e.printStackTrace();   
        }   
        if(wwb!=null){   
            //创建一个可写入的工作表   
            //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置   
            WritableSheet ws = wwb.createSheet("sheet1", 0);   
               
            //下面开始添加单元格   
            for(int i=0;i<10;i++){   
                for(int j=0;j<5;j++){   
                    //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行   
                    Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");   
                    try {   
                        //将生成的单元格添加到工作表中   
                        ws.addCell(labelC);   
                    } catch (RowsExceededException e) {   
                        e.printStackTrace();   
                    } catch (WriteException e) {   
                        e.printStackTrace();   
                    }   
  
                }   
            }   
  
            try {   
                //从内存中写入文件中   
                wwb.write();   
                //关闭资源,释放内存   
                wwb.close();   
            } catch (IOException e) {   
                e.printStackTrace();   
            } catch (WriteException e) {   
                e.printStackTrace();   
            }   
        }   
    }   
三.在一个Excel文件中查找是否包含某一个关键字 

java 代码 
    /**搜索某一个文件中是否包含某个关键字  
     * @param file  待搜索的文件  
     * @param keyWord  要搜索的关键字  
     * @return  
     */  
    public static boolean searchKeyWord(File file,String keyWord){   
        boolean res = false;   
           
        Workbook wb = null;   
        try {   
            //构造Workbook(工作薄)对象   
            wb=Workbook.getWorkbook(file);   
        } catch (BiffException e) {   
            return res;   
        } catch (IOException e) {   
            return res;   
        }   
           
        if(wb==null)   
            return res;   
           
        //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了   
        Sheet[] sheet = wb.getSheets();   
           
        boolean breakSheet = false;   
           
        if(sheet!=null&&sheet.length>0){   
            //对每个工作表进行循环   
            for(int i=0;i 
                if(breakSheet)   
                    break;   
                   
                //得到当前工作表的行数   
                int rowNum = sheet[i].getRows();   
                   
                boolean breakRow = false;   
                   
                for(int j=0;j 
                    if(breakRow)   
                        break;   
                    //得到当前行的所有单元格   
                    Cell[] cells = sheet[i].getRow(j);   
                    if(cells!=null&&cells.length>0){   
                        boolean breakCell = false;   
                        //对每个单元格进行循环   
                        for(int k=0;k 
                            if(breakCell)   
                                break;   
                            //读取当前单元格的值   
                            String cellValue = cells[k].getContents();   
                            if(cellValue==null)   
                                continue;   
                            if(cellValue.contains(keyWord)){   
                                res = true;   
                                breakCell = true;   
                                breakRow = true;   
                                breakSheet = true;   
                            }   
                        }   
                    }   
                }   
            }   
        }   
        //最后关闭资源,释放内存   
        wb.close();   
           
        return res;   
    }  
四.往Excel中插入图片图标 

插入图片的实现很容易,参看以下代码: 

java 代码 
/**往Excel中插入图片  
* @param dataSheet  待插入的工作表  
* @param col 图片从该列开始  
* @param row 图片从该行开始  
* @param width 图片所占的列数  
* @param height 图片所占的行数  
* @param imgFile 要插入的图片文件  
*/  
public static void insertImg(WritableSheet dataSheet, int col, int row, int width,   
        int height, File imgFile){   
    WritableImage img = new WritableImage(col, row, width, height, imgFile);   
    dataSheet.addImage(img);   
}   
以上代码的注释已经很清楚了,大概也就不用再解释了,我们可以用如下程序验证: 

java 代码 
    try {   
        //创建一个工作薄   
WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));   
//待插入的工作表   
WritableSheet imgSheet = workbook.createSheet("Images",0);   
//要插入的图片文件   
File imgFile = new File("D:/1.png");   
//图片插入到第二行第一个单元格,长宽各占六个单元格   
insertImg(imgSheet,0,1,6,6,imgFile);   
workbook.write();   
workbook.close();   
catch (IOException e) {   
e.printStackTrace();   
catch (WriteException e) {   
e.printStackTrace();   
但是jxl只支持png格式的图片,jpg格式和gif格式都不支持 
======================================================== 
jxl.jar包简介/java操作excel jxl.jar下载地址 

jxl.jar 包简介 
下载地址: 
http://www.andykhan.com/jexcelapi/ 当前的最高版本是2.6。 

真实下载地址: 

http://www.andykhan.com/jexcelapi/download.html 


作者的网站上对它的特征有如下描述: 
● 支持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); 或//设置字体格式为excel支持的格式 WritableFont font3=new WritableFont(WritableFont.createFont("楷体 _GB2312"),12,WritableFont.NO_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); 

//设置自动换行 
format1.setWrap(true); 



二、单元格操作 
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); 
五、操作图片 
public static void write()throws Exception{ 
        WritableWorkbook wwb=Workbook.createWorkbook(new File("c:/1.xls")); 
        WritableSheet ws=wwb.createSheet("Test Sheet 1",0); 
        File file=new File("C:\\jbproject\\PVS\\WebRoot\\weekhit\\1109496996281.png"); 
        WritableImage image=new WritableImage(1, 4, 6, 18,file); 
        ws.addImage(image); 
        wwb.write(); 
        wwb.close(); 
    } 
很简单和插入单元格的方式一样,不过就是参数多了些,WritableImage这个类继承了Draw,上面只是他构造方法的一种,最后一个参数不用了说了,前面四个参数的类型都是double,依次是 x, y, width, height,注意,这里的宽和高可不是图片的宽和高,而是图片所要占的单位格的个数,因为继承的Draw所以他的类型必须是double,具体里面怎么实现的我还没细看:)因为着急赶活,先完成功能,其他的以后有时间慢慢研究。以后会继续写出在使用中的心得给大家。 
   读: 
读的时候是这样的一个思路,先用一个输入流(InputStream)得到Excel文件,然后用jxl中的Workbook得到工作薄,用Sheet从工作薄中得到工作表,用Cell得到工作表中得某个单元格. 
InputStream->Workbook->Sheet->Cell,就得到了excel文件中的单元格 
代码: 
String path="c:\\excel.xls";//Excel文件URL 
InputStream is = new FileInputStream(path);//写入到FileInputStream 
jxl.Workbook wb = Workbook.getWorkbook(is); //得到工作薄 
jxl.Sheet st = wb.getSheet(0);//得到工作薄中的第一个工作表 
Cell cell=st.getCell(0,0);//得到工作表的第一个单元格,即A1 
String content=cell.getContents();//getContents()将Cell中的字符转为字符串 
wb.close();//关闭工作薄 
is.close();//关闭输入流 

我们可以通过Sheet的getCell(x,y)方法得到任意一个单元格,x,y和excel中的坐标对应. 
例如A1对应(0,0),A2对应(0,1),D3对应(3,2).Excel中坐标从A,1开始,jxl中全部是从0开始. 
还可以通过Sheet的getRows(),getColumns()方法得到行数列数,并用于循环控制,输出一个sheet中的所有内容. 
写: 
往Excel中写入内容主要是用jxl.write包中的类. 
思路是这样的: 
OutputStream<-WritableWorkbook<-WritableSheet<-Label 
这里面Label代表的是写入Sheet的Cell位置及内容. 
代码: 
OutputStream os=new FileOutputStream("c:\\test.xls");//输出的Excel文件URL 
WritableWorkbook wwb = Workbook.createWorkbook(os);//创建可写工作薄 
WritableSheet ws = wwb.createSheet("sheet1", 0);//创建可写工作表 
Label labelCF=new Label(0, 0, "hello");//创建写入位置和内容 
ws.addCell(labelCF);//将Label写入sheet中 
Label的构造函数Label(int x, int y,String aString)xy意同读的时候的xy,aString是写入的内容. 
WritableFont wf = new WritableFont(WritableFont.TIMES, 12, WritableFont.BOLD, false);//设置写入字体 
WritableCellFormat wcfF = new WritableCellFormat(wf);//设置CellFormat 
Label labelCF=new Label(0, 0, "hello");//创建写入位置,内容和格式 
Label的另一构造函数Label(int c, int r, String cont, CellFormat st)可以对写入内容进行格式化,设置字体及其它的属性. 
现在可以写了 
wwb.write(); 
写完后关闭 
wwb.close(); 
输出流也关闭吧 
os.close; 
OK,只要把读和写结合起来,就可以在N个Excel中读取数据写入你希望的Excel新表中,还是比较方便的. 

下面是程序一例: 

程序代码:sql = "select * from tablename"; 
    rs = stmt.executeQuery(sql); 

//新建Excel文件 
String filePath=request.getRealPath("aaa.xls"); 
File myFilePath=new File(filePath); 
if(!myFilePath.exists()) 
myFilePath.createNewFile(); 
FileWriter resultFile=new FileWriter(myFilePath); 
PrintWriter myFile=new PrintWriter(resultFile); 
resultFile.close(); 

        //用JXL向新建的文件中添加内容 
    OutputStream outf = new FileOutputStream(filePath); 
        jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(outf); 
        jxl.write.WritableSheet ws = wwb.createSheet("sheettest", 0); 

int i=0; 
        int j=0; 

for (int k = 0; k < rs.getMetaData().getColumnCount(); k++) { 
    ws.addCell(new Label(k,0,rs.getMetaData().getColumnName(k+1))); 


while(rs.next()){ 
    out.println(rs.getMetaData().getColumnCount()); 

for (int k = 0; k < rs.getMetaData().getColumnCount(); k++) { 
ws.addCell(new Label(k,j+i+1,rs.getString(k+1))); 
    } 

i++; 

wwb.write(); 
    wwb.close(); 
}catch(Exception e){e.printStackTrace();} 
finally{ 

rs.close(); 
conn.close(); 


response.sendRedirect("aaa.xls"); 
============================================== 
  1 /** 
  2  * QuickExcel.java 
  3  * 作者:杨庆成 
  4  * Created on 2004年11月22日, 下午4:05 
  5  * 在实际应用中经常要将数据库中的表导入Excel 
  6  * 本人在Apache的POI基础上写了一个简单的类 
  7  * 有不当指出请指正,谢谢! 
  8  * 
  9  */ 
10 
11package yqc.poi; 
12 
13import java.sql.*; 
14import java.util.*; 
15import java.io.*; 
16import java.io.ByteArrayInputStream; 
17import java.io.FileInputStream; 
18import java.io.FileOutputStream; 
19import java.io.IOException; 
20 
21import org.apache.poi.hssf.usermodel.*; 
22import org.apache.poi.poifs.filesystem.POIFSFileSystem; 
23import org.apache.poi.hssf.record.*; 
24import org.apache.poi.hssf.model.*; 
25import org.apache.poi.hssf.usermodel.*; 
26import org.apache.poi.hssf.util.*;import yqc.sql.*; 
27 
28/**//** 
29 * 
30 * @author  Administrator 
31 */ 
32public class QuickExcel { 
33    
34    /**//** Creates a new instance of QuickExcel */ 
35    private QuickExcel(String file){ 
36        _file=file; 
37    } 
38    
39    private void open()throws IOException{ 
40        InputStream stream = null; 
41        Record[] records = null; 
42        POIFSFileSystem fs = 
43            new POIFSFileSystem(new FileInputStream(_file)); 
44        _wb = new HSSFWorkbook(fs); 
45    } 
46    
47    private void create(){ 
48        _wb=new HSSFWorkbook(); 
49    } 
50    
51    public static QuickExcel newInstance (String file){ 
52        QuickExcel qe=new QuickExcel(file); 
53        qe.create(); 
54        return qe; 
55    } 
56    
57    public static QuickExcel openInstance(String file) throws IOException { 
58        QuickExcel qe=new QuickExcel(file); 
59        qe.open(); 
60        return qe; 
61    } 
62    
63    public void close(){ 
64        try{ 
65            FileOutputStream fileOut = new FileOutputStream(_file); 
66            _wb.write(fileOut);//把Workbook对象输出到文件workbook.xls中 
67            fileOut.close(); 
68        } 
69        catch (Exception ex){ 
70            System.out.println(ex.getMessage()); 
71        } 
72    } 
73    
74    private void removeSheet(String sheetName){ 
75        int i=_wb.getSheetIndex("sheetName"); 
76        if (i>=0) _wb.removeSheetAt(i); 
77    } 
78    
79    public int fillSheet (ResultSet rs,String sheetName)throws SQLException { 
80        HSSFSheet st= _wb.createSheet(sheetName); 
81        ResultSetMetaData rsmd= rs.getMetaData(); 
82        int index=0; 
83        int result=0; 
84        HSSFRow row=st.createRow(index++); 
85        for(int i=1;i<=rsmd.getColumnCount();++i){ 
86            HSSFCell cell=row.createCell((short)(i-1)); 
87            cell.setCellValue(rsmd.getColumnName(i)); 
88        } 
89        while(rs.next()) { 
90            result++; 
91            row=st.createRow(index++); 
92            for(int i=1;i<=rsmd.getColumnCount();++i){ 
93                HSSFCell cell=row.createCell((short)(i-1)); 
94                cell.setEncoding(cell.ENCODING_UTF_16); 
95                cell.setCellValue(rs.getString(i)); 
96            } 
97        } 
98        return result; 
99} 
100    
101    public static void main(String[] args){ 
102        try{ 
103            QuickConnection qc=new MssqlConnection("jdbc:microsoft:sqlserver://192.168.0.100:1433;DatabaseName=ls"); 
104            QuickExcel qe=QuickExcel.newInstance("a.xls"); 
105            qc.connect(); 
106            String sql="select * from ls.dbo.radio1_emcee"; 
107            ResultSet rs=qc.getStatement().executeQuery(sql); 
108            qe.fillSheet(rs,"MT"); 
109            qe.close(); 
110            qe=QuickExcel.openInstance("a.xls"); 
111            qe.fillSheet(rs,"MO"); 
112            qe.close(); 
113            qc.close(); 
114        } 
115        catch (SQLException ex){ 
116            System.out.println(ex.getMessage()); 
117        } 
118        catch (IOException ex){ 
119            System.out.println(ex.getMessage()); 
120        } 
121    } 
122    
123    HSSFWorkbook _wb; 
124    String _file="new.xls"; 
125} 
=================================== 
/**导出数据为XLS格式 
  * @param fos 生成Excel文件Path 
  * @param bo 要导入的数据 
  */ 
public void writeExcelBo(FileOutputStream fos, java.util.Vector ve) 

  jxl.write.WritableWorkbook wwb; 
  try 
  { 
   wwb= Workbook.createWorkbook(fos); 
   jxl.write.WritableSheet ws= wwb.createSheet("booksheet", 10); 
   ws.addCell(new jxl.write.Label(0, 1, "书目ID")); 
   ws.addCell(new jxl.write.Label(1, 1, "ISBN")); 
   ws.addCell(new jxl.write.Label(2, 1, "定价")); 
   ws.addCell(new jxl.write.Label(3, 1, "书名")); 
   ws.addCell(new jxl.write.Label(4, 1, "原书名")); 
   ws.addCell(new jxl.write.Label(5, 1, "副题名")); 
   ws.addCell(new jxl.write.Label(6, 1, "著者")); 
   ws.addCell(new jxl.write.Label(7, 1, "译者")); 
   ws.addCell(new jxl.write.Label(8, 1, "版次")); 
   ws.addCell(new jxl.write.Label(9, 1, "出版地")); 
   ws.addCell(new jxl.write.Label(10, 1, "出版社")); 
   ws.addCell(new jxl.write.Label(11, 1, "出版日期")); 
   ws.addCell(new jxl.write.Label(12, 1, "页数")); 
   ws.addCell(new jxl.write.Label(13, 1, "书高")); 
   ws.addCell(new jxl.write.Label(14, 1, "装帧")); 
   ws.addCell(new jxl.write.Label(15, 1, "丛书名")); 
   ws.addCell(new jxl.write.Label(16, 1, "一般性附注项")); 
   ws.addCell(new jxl.write.Label(17, 1, "简介")); 
   ws.addCell(new jxl.write.Label(18, 1, "主题词")); 
   ws.addCell(new jxl.write.Label(19, 1, "中图法分类")); 
   ws.addCell(new jxl.write.Label(20, 1, "更新日期")); 
   ws.addCell(new jxl.write.Label(21, 1, "本数")); 
   book=new Book[ve.size()]; 
   for (int i= 0; i < ve.size(); i++) 
   { 
    book[i]= (Book)ve.get(i); 
    ws.addCell(new jxl.write.Label(0, i + 2, "" + book[i].getBookId())); 
    ws.addCell(new jxl.write.Label(1, i + 2, book[i].getIsbn())); 
    ws.addCell(new jxl.write.Label(2, i + 2, "" + book[i].getPrice())); 
    ws.addCell(new jxl.write.Label(3, i + 2, book[i].getBookTitle())); 
    ws.addCell(new jxl.write.Label(4, i + 2, book[i].getOldFilename())); 
    ws.addCell(new jxl.write.Label(5, i + 2, book[i].getSubTitle())); 
    ws.addCell(new jxl.write.Label(6, i + 2, book[i].getWriter())); 
    ws.addCell(new jxl.write.Label(7, i + 2, book[i].getTranscribe())); 
    ws.addCell(new jxl.write.Label(8, i + 2, "" + book[i].getVersion())); 
    ws.addCell(new jxl.write.Label(9, i + 2, book[i].getPublishCity())); 
    ws.addCell(new jxl.write.Label(10, i + 2, book[i].getPublisher())); 
    ws.addCell(new jxl.write.Label(11, i + 2, book[i].getPublishDate().toString())); 
    ws.addCell(new jxl.write.Label(12, i + 2, "" + book[i].getPage())); 
    ws.addCell(new jxl.write.Label(13, i + 2, "" + book[i].getHight())); 
    ws.addCell(new jxl.write.Label(14, i + 2, book[i].getInstall())); 
    ws.addCell(new jxl.write.Label(15, i + 2, book[i].getSeries())); 
    ws.addCell(new jxl.write.Label(16, i + 2, book[i].getNotes())); 
    ws.addCell(new jxl.write.Label(17, i + 2, book[i].getPrecisnotes())); 
    ws.addCell(new jxl.write.Label(18, i + 2, book[i].getSubject())); 
    ws.addCell(new jxl.write.Label(19, i + 2, book[i].getCls().replaceAll("_", ""))); 
    ws.addCell(new jxl.write.Label(20, i + 2, book[i].getUpdatedate().toString())); 
    ws.addCell(new jxl.write.Label(21, i + 2, "0")); 
   } 
   jxl.write.WritableFont wfc= 
    new jxl.write.WritableFont( 
     WritableFont.ARIAL, 
     255, 
     WritableFont.BOLD, 
     false, 
     UnderlineStyle.NO_UNDERLINE, 
     jxl.format.Colour.BLACK); 
   jxl.write.WritableCellFormat wcfFC= new jxl.write.WritableCellFormat(wfc); 
   ws.addCell(new jxl.write.Label(0, 0, "为保证您提交定单的稳定和正确,导入定单时候请勿更改此表格式(请勿更改书目ID,订购本数自行添加!)")); 
   wwb.write(); 
   //关闭Excel工作薄对象 
   wwb.close(); 
  } catch (IOException e) 
  {} catch (RowsExceededException e) 
  {} catch (WriteException e) 
  {} 




   //导入EXCEL 
   if (f.getName().indexOf(".xls") > 0) 
   { 
    try 
    { 
     fis= new FileInputStream(f); 
     BookBean bob= new BookBean(); 
     UserBean usb= new UserBean(); 
     jxl.Workbook rwb= Workbook.getWorkbook(fis); 
     jxl.Sheet sh= rwb.getSheet(0); 
     int rowCount= sh.getRows(); 
     SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy"); 
     book= new Book[rowCount - 1]; 
     for (int i= 1; i < rowCount; i++) 
     { 
      book[i - 1]= new Book(); 
      jxl.Cell[] ce= sh.getRow(i); 
      book[i - 1].setIsbn(ce[0].getContents().toString()); 
      book[i - 1].setSeries(ce[1].getContents().toString()); 
      book[i - 1].setBookTitle(ce[2].getContents().toString()); 
      book[i - 1].setWriter(ce[3].getContents().toString()); 
      book[i - 1].setTranscribe(ce[4].getContents().toString()); 
      book[i - 1].setPublisher(ce[5].getContents().toString()); 
      book[i - 1].setPublishDate(sdf.parse(ce[6].getContents().toString(), new ParsePosition(0))); 
      book[i-1].setVersion(Integer.parseInt(ce[7].getContents().toString())); 
      book[i-1].setPage(Integer.parseInt(ce[8].getContents().toString())); 
      book[i-1].setCls(ce[9].getContents().toString()); 
      book[i-1].setPrecisnotes(ce[10].getContents().toString()); 
      book[i-1].setInstall(ce[11].getContents().toString()); 
      book[i-1].setPrice(Float.parseFloat(ce[12].getContents().toString())); 
      book[i-1].setUserid(usb.getUser().getUserid()); 
      getVector().addElement(book[i - 1]); 
     } 
     rwb.close(); 
     fis.close(); 
    } catch (FileNotFoundException e) 
    {} catch (BiffException e) 
    {} catch (IOException e) 
    {} catch (NumberFormatException e) 
    { 
     ShowMessage("数据导入失败,请按照本软件要求的EXCEL格式导入定单"); 
    } 
   } 
================================================= 
    
    
文档选项 


级别: 初级 

Rubber (mailto:userid@us.ibm.com?subject=利用JAVA操作EXCEL文件&cc=userid@us.ibm.com), 

    使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事。在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是在JSP或Servlet 中创建一个CSV (comma separated values)文件,并将这个文件以MIME,text/csv类型返回给浏览器,接着浏览器调用Excel并且显示CSV文件。这样只是说可以访问到 Excel文件,但是还不能真正的操纵Excel文件,本文将给大家一个惊喜,向大家介绍一个开放源码项目,Java Excel API,使用它大家就可以方便地操纵Excel文件了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值