`

jxl读写excel

    博客分类:
  • jxl
阅读更多
Java代码 复制代码
  1. import java.io.FileInputStream;   
  2. import java.io.FileNotFoundException;   
  3. import java.io.IOException;   
  4. import java.io.InputStream;   
  5. import java.util.ArrayList;   
  6. import java.util.List;   
  7.   
  8. import jxl.Cell;   
  9. import jxl.Sheet;   
  10. import jxl.Workbook;   
  11. import jxl.read.biff.BiffException;   
  12.   
  13. public class ExcelImporter   
  14. {   
  15.   
  16.     /**  
  17.      * @Function     //函数、方法名称  
  18.      * @Description  //测试excell表格  
  19.      * @Input        //输入参数的说明  
  20.      * @Output       //输出参数的说明  
  21.      * @Return       //函数返回值的说明  
  22.      * @Others       //其它说明  
  23.      */  
  24.     public static void main(String[] args)   
  25.     {   
  26.         // TODO Auto-generated method stub   
  27.         List<String> list = new ArrayList<String>();   
  28.         String filePath = "C:/sinye.xls";   
  29.         InputStream fs = null;   
  30.                     Workbook workBook = null;   
  31.            
  32.         try {   
  33.             // 加载excel文件   
  34.             fs = new FileInputStream(filePath);   
  35.             // 得到 workbook   
  36.                 workBook = Workbook.getWorkbook(fs);   
  37.            } catch (FileNotFoundException e) {   
  38.                e.printStackTrace();   
  39.            } catch (BiffException e) {   
  40.                e.printStackTrace();   
  41.            } catch (IOException e) {   
  42.                e.printStackTrace();   
  43.            }   
  44.     
  45.               // 取得sheet,如果你的workbook里有多个sheet 可以利用 wb.getSheets()方法来得到所有的。   
  46.            // getSheets() 方法返回 Sheet[] 数组 然后利用数组来操作。就是多次循环的事。   
  47.            Sheet sheet = workBook.getSheet(0);//这里只取得第一个sheet的值,默认从0开始   
  48.            System.out.println(sheet.getColumns());//查看sheet的列   
  49.            System.out.println(sheet.getRows());//查看sheet的行   
  50.            Cell cell = null;//就是单个单元格   
  51.            // 开始循环,取得 cell 里的内容,这里都是按String来取的 为了省事,具体你自己可以按实际类型来取。或者都按   
  52.            // String来取。然后根据你需要强制转换一下。   
  53.            for (int j = 0; j < sheet.getColumns(); j++) {   
  54.                 StringBuffer sb =  new StringBuffer();   
  55.                 for (int i = 0; i < sheet.getRows(); i++) {   
  56.                     cell = sheet.getCell(j, i);   
  57.                     sb.append(cell.getContents());   
  58.                     sb.append(",");//将单元格的每行内容用逗号隔开   
  59.                 }   
  60.                 list.add(sb.toString());//将每行的字符串用一个String类型的集合保存。   
  61.            }   
  62.            workBook.close();//记得关闭   
  63.               
  64.           //迭代集合查看每行的数据   
  65.           for(String ss:list){   
  66.               System.out.println(ss);   
  67.           }   
  68.     }   
  69.   
  70. }  
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ExcelImporter
{

	/**
	 * @Function     //函数、方法名称
	 * @Description  //测试excell表格
	 * @Input        //输入参数的说明
	 * @Output       //输出参数的说明
	 * @Return       //函数返回值的说明
	 * @Others       //其它说明
	 */
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		List<String> list = new ArrayList<String>();
		String filePath = "C:/sinye.xls";
		InputStream fs = null;
	                Workbook workBook = null;
	    
	    try {
	        // 加载excel文件
	        fs = new FileInputStream(filePath);
	        // 得到 workbook
	            workBook = Workbook.getWorkbook(fs);
	       } catch (FileNotFoundException e) {
	    	   e.printStackTrace();
	       } catch (BiffException e) {
	    	   e.printStackTrace();
	       } catch (IOException e) {
	    	   e.printStackTrace();
	       }
 
	          // 取得sheet,如果你的workbook里有多个sheet 可以利用 wb.getSheets()方法来得到所有的。
	       // getSheets() 方法返回 Sheet[] 数组 然后利用数组来操作。就是多次循环的事。
	       Sheet sheet = workBook.getSheet(0);//这里只取得第一个sheet的值,默认从0开始
	       System.out.println(sheet.getColumns());//查看sheet的列
	       System.out.println(sheet.getRows());//查看sheet的行
	       Cell cell = null;//就是单个单元格
	       // 开始循环,取得 cell 里的内容,这里都是按String来取的 为了省事,具体你自己可以按实际类型来取。或者都按
	       // String来取。然后根据你需要强制转换一下。
	       for (int j = 0; j < sheet.getColumns(); j++) {
	    	   	StringBuffer sb =  new StringBuffer();
		        for (int i = 0; i < sheet.getRows(); i++) {
		        	cell = sheet.getCell(j, i);
		        	sb.append(cell.getContents());
		        	sb.append(",");//将单元格的每行内容用逗号隔开
		        }
		        list.add(sb.toString());//将每行的字符串用一个String类型的集合保存。
	       }
	       workBook.close();//记得关闭
	       
	      //迭代集合查看每行的数据
	      for(String ss:list){
	    	  System.out.println(ss);
	      }
	}

}

 接下来,就是写excel了,见代码:

Java代码 复制代码
  1. import java.io.File;   
  2. import java.io.FileNotFoundException;   
  3. import java.io.FileOutputStream;   
  4. import java.io.IOException;   
  5. import java.io.OutputStream;   
  6. import java.util.ArrayList;   
  7. import java.util.List;   
  8.   
  9. import jxl.Workbook;   
  10. import jxl.write.Label;   
  11. import jxl.write.WritableSheet;   
  12. import jxl.write.WritableWorkbook;   
  13. import jxl.write.WriteException;   
  14. import jxl.write.biff.RowsExceededException;   
  15.   
  16. public class JxlWriteExcel {   
  17.        
  18.     /**  
  19.      * @param datas 封装着Object[]的列表, 一般是String内容.  
  20.      * @param title 每个sheet里的标题.  
  21.      */  
  22.     public void writeExcel(OutputStream out, List list, String[] title) {   
  23.         if(list == null) {   
  24.             throw new IllegalArgumentException("要写入excel的数据不能为空!");   
  25.         }   
  26.         try {   
  27.             WritableWorkbook workbook = Workbook.createWorkbook(out);   
  28.             WritableSheet ws = workbook.createSheet("sheet 1"0);//创建sheet   
  29.             int rowNum = 0;    //要写的行,jxl操作excel时,第一行是从0开始,以此类推   
  30.             if(title != null) {   
  31.                 putRow(ws, 0, title);//压入标题   
  32.                 rowNum = 1;   
  33.             }   
  34.             for(int i=0; i<list.size(); i++, rowNum++) {//写sheet   
  35.                 Object[] cells = (Object[]) list.get(i);   
  36.                 putRow(ws, rowNum, cells);    //压一行到sheet   
  37.             }   
  38.             workbook.write();   
  39.             workbook.close();    //一定要关闭, 否则没有保存Excel   
  40.         } catch (RowsExceededException e) {   
  41.             System.out.println("jxl write RowsExceededException: "+e.getMessage());   
  42.         } catch (WriteException e) {   
  43.             System.out.println("jxl write WriteException: "+e.getMessage());   
  44.         } catch (IOException e) {   
  45.             System.out.println("jxl write file i/o exception!, cause by: "+e.getMessage());   
  46.         }   
  47.     }   
  48.   
  49.     private void putRow(WritableSheet ws, int rowNum, Object[] cells) throws RowsExceededException, WriteException {   
  50.         for(int j=0; j<cells.length; j++) {//写一行   
  51.             Label cell = new Label(j, rowNum, ""+cells[j]);   
  52.             ws.addCell(cell);   
  53.         }   
  54.     }   
  55.        
  56. }  
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class JxlWriteExcel {
    
    /**
     * @param datas 封装着Object[]的列表, 一般是String内容.
     * @param title 每个sheet里的标题.
     */
    public void writeExcel(OutputStream out, List list, String[] title) {
        if(list == null) {
            throw new IllegalArgumentException("要写入excel的数据不能为空!");
        }
        try {
            WritableWorkbook workbook = Workbook.createWorkbook(out);
            WritableSheet ws = workbook.createSheet("sheet 1", 0);//创建sheet
            int rowNum = 0;    //要写的行,jxl操作excel时,第一行是从0开始,以此类推
            if(title != null) {
                putRow(ws, 0, title);//压入标题
                rowNum = 1;
            }
            for(int i=0; i<list.size(); i++, rowNum++) {//写sheet
                Object[] cells = (Object[]) list.get(i);
                putRow(ws, rowNum, cells);    //压一行到sheet
            }
            workbook.write();
            workbook.close();    //一定要关闭, 否则没有保存Excel
        } catch (RowsExceededException e) {
            System.out.println("jxl write RowsExceededException: "+e.getMessage());
        } catch (WriteException e) {
            System.out.println("jxl write WriteException: "+e.getMessage());
        } catch (IOException e) {
            System.out.println("jxl write file i/o exception!, cause by: "+e.getMessage());
        }
    }

    private void putRow(WritableSheet ws, int rowNum, Object[] cells) throws RowsExceededException, WriteException {
        for(int j=0; j<cells.length; j++) {//写一行
            Label cell = new Label(j, rowNum, ""+cells[j]);
            ws.addCell(cell);
        }
    }
    
}

 调用写excel的测试代码

Java代码 复制代码
  1. import java.io.File;   
  2. import java.io.FileNotFoundException;   
  3. import java.io.FileOutputStream;   
  4. import java.io.IOException;   
  5. import java.io.OutputStream;   
  6. import java.util.ArrayList;   
  7. import java.util.List;   
  8.   
  9. public class Test1 {   
  10.             public static void main(String[] args) {   
  11.     // TODO Auto-generated method stub   
  12.     List list = new ArrayList();   
  13.     //组装写入excel的数据   
  14.         for(int i=0;i<10;i++){   
  15.             String[] data = {"开心"+i,"2"+i};   
  16.             list.add(data);   
  17.         }   
  18.         try {   
  19.             OutputStream out = new FileOutputStream(new File("c:\\sinye.xls"));   
  20.             JxlWriteExcel jxlExcelWriter = new JxlWriteExcel();   
  21.             jxlExcelWriter.writeExcel(out, list, new String[] {"姓名""年龄"});   
  22.             out.close();   
  23.         } catch (FileNotFoundException e) {   
  24.             e.printStackTrace();   
  25.         } catch (IOException e) {   
  26.             e.printStackTrace();   
  27.         }   
  28.     }   
  29. }  
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

public class Test1 {
            public static void main(String[] args) {
	// TODO Auto-generated method stub
	List list = new ArrayList();
	//组装写入excel的数据
        for(int i=0;i<10;i++){
        	String[] data = {"开心"+i,"2"+i};
        	list.add(data);
        }
        try {
            OutputStream out = new FileOutputStream(new File("c:\\sinye.xls"));
            JxlWriteExcel jxlExcelWriter = new JxlWriteExcel();
            jxlExcelWriter.writeExcel(out, list, new String[] {"姓名", "年龄"});
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics