欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 读取模板EXCEL写入数值  

程序员文章站 2024-03-15 11:57:41
...
自己写了个读取excel模板的写入数据的列子

package copy.user;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class ExcelMain {
	
	/**
	 * 
	 * 这个是单纯读取EXCEL数据
	 * */
	public  void read() {
		StringBuffer sb = new StringBuffer();  
        Workbook wb = null;   
        try {   
        	File is = new File("f:\\ExcelTest\\try.xls");
            // 获取工作簿对象   
            wb = Workbook.getWorkbook(is);   
            if (wb != null) {   
                // 获取工作簿对象就可以获取工作簿内的工作表对象   
                Sheet[] sheets = wb.getSheets();   
                if (sheets != null && sheets.length != 0) {   
                    // 遍历工作簿内所有工作表   
                    for (int i=0;i<sheets.length;i++) {   
                        // 获取该工作表内的行数   
                        int rows = sheets[i].getRows();   
                        // 遍历行   
                        for (int j=0;j<rows;j++) {   
                        	String cell ="";
                            // 获取当前行的所有单元格   
                            Cell[] cells = sheets[i].getRow(j);   
                            if (cells != null && cells.length != 0) {   
                                // 遍历单元格   
                                for (int k=0;k<cells.length;k++) {   
                                    // 获取当前单元格的值   
                                	if(!cells[k].getContents().equals("")){
                                		cell += cells[k].getContents();   
                                	}
                                    // 缩进   
                                    sb.append(cell + "\t");   
                                }   
                                System.out.println(cell);
                                sb.append("\t\n");   
                            }   
                        }   
                        sb.append("\t\n");   
                    }   
                }   
                System.out.println("成功读取了:" +is.getName()+ "\n");   
            }   
        } catch (Exception e) {   
            e.printStackTrace();
        } finally {   
        	//关闭
            wb.close();   
        }   
	}
	/**
	 * 
	 * 这是单纯的写EXCEL表格
	 * **/
	private void write(){
		WritableWorkbook wwb = null;   
        Label label = null;   
        String file ="f:\\ExcelTest\\3.xls";
        try {   
            // 创建可写入的工作簿对象   
            wwb = Workbook.createWorkbook(new File(file));   
            if (wwb != null) {   
                // 在工作簿里创建可写入的工作表,第一个参数为工作表名,第二个参数为该工作表的所在位置 
            	WritableSheet ws = wwb.createSheet("Sheet4", 2);   
                if (ws != null) {   
                    /* 添加表结构 */  
                    // 行   
                    for (int i=0;i<5;i++) {   
                        // 列   
                        for (int j=0;j<5;j++) {   
                            // Label构造器中有三个参数,第一个为列,第二个为行,第三个则为单元格填充的内容   
                            label = new Label(j, i, "第"+(i+1)+"行," + "第"+(j+1)+"列");   
                            // 将被写入数据的单元格添加到工作表   
                            ws.addCell(label);   
                        }   
                    }   
                    // 从内存中写入到文件   
                    wwb.write();   
                }   
                System.out.println("路径为:" + file + "的工作簿写入数据成功!");   
            }   
        } catch (Exception e) {   
            System.out.println(e.getMessage());   
        } finally {   
            try { 
				wwb.close();
			} catch (WriteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}   
        }   
	}
	
	/**
	 * 
	 * 这个是读取模板写入数据
	 * **/
	private void readWriter(){
		WritableWorkbook wwb=null;
		WritableSheet wws=null;
		FileOutputStream out =null;
		Connection conn=null;
		Statement st=null;
		ResultSet mySQLRS=null;
		//获取要读取的EXCEL表格模板
		File is = new File("f:\\ExcelTest\\try.xls");
        String filename="f:\\ExcelTest\\";
        //写入到新的表格里
        File f=new File(filename,"try1.xls");
        try {
        	//创建新文件
        	f.createNewFile();
        	out = new FileOutputStream(f);
        	//获取工作簿对象   
			Workbook wb = Workbook.getWorkbook(is);
			// 创建可写入的工作簿对象  
			wwb = Workbook.createWorkbook(out, wb);
			//根据工作表名获取WritableSheet对象
			wws=wwb.getSheet("Sheet1");
			//这个是链接数据库的一个对象
			CopyUser cp=new CopyUser();
			//获取connection
			conn=cp.getMYConnection();
			//创建Statement
			st=conn.createStatement();
			WritableCellFormat wcf=new WritableCellFormat(); 
			//设置样式
			wcf.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN); 
			mySQLRS=st.executeQuery("select name,officeName from mix_end_user where officeName like '河南%' ");
			Label label=null;
			List<String> list=new ArrayList<String>();
			while(mySQLRS.next()){
				//将数据存放在List当中
				list.add(mySQLRS.getString("name"));
			}
			int count_02=0;
			for(int i=3;i<24;i++){
				for(int j=3;j<9;j++){
					//创建label对象设置value值j相当于是X轴I是Y轴位置
					label= new Label(j,i,list.get(count_02),wcf);
					//添加到工作薄中
					wws.addCell(label);
					count_02++;
				}
			}
			//将新建立的工作薄写入到磁盘
			wwb.write();
        } catch (Exception e) {
			e.printStackTrace();
		} finally{
			//关闭流
			try {
				wwb.close();
				out.close();
				mySQLRS.close();
				st.close();
				conn.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		new ExcelMain().readWriter();
	}
}