码迷,mamicode.com
首页 > 其他好文 > 详细

jxl读写excel

时间:2016-04-23 07:20:06      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

实例一:读excel:


import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cell; import jxl.CellType; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; public class xls { public static void main(String[] args) { jxl.Workbook readwb = null; try { // 构建Workbook对象, 只读Workbook对象,直接从本地文件创建Workbook InputStream instream = new FileInputStream("./活动日历.xls"); readwb = Workbook.getWorkbook(instream); // 获取第一张Sheet表 Sheet readsheet = readwb.getSheet(0); int rsColumns = readsheet.getColumns();//总列数 int rsRows = readsheet.getRows();//总行数 for (int i = 0; i < rsRows; i++){ for (int j = 0; j < rsColumns; j++){ Cell cell = readsheet.getCell(j, i); System.out.print(cell.getContents() + " "); } System.out.println(); } //创建新的可写入的Excel工作薄 jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("./活动日历1.xls"), readwb); // 读取第一张工作表 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("新姓名"); } wwb.write(); wwb.close(); } catch (Exception e) { e.printStackTrace(); } finally { readwb.close(); } } }

 

 

实例二:写excel:

package yxCollector.yxCollector;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

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 xls {
    public void createExcel(OutputStream os) throws WriteException, IOException {
        // 创建工作薄
        WritableWorkbook workbook = Workbook.createWorkbook(os);
        // 创建新的一页
        WritableSheet sheet = workbook.createSheet("First Sheet", 0);
        // 创建要显示的内容,创建一个单元格,第一个参数为列坐标,第二个参数为行坐标,第三个参数为内容
        Label xuexiao = new Label(0, 0, "学校");
        sheet.addCell(xuexiao);
        Label zhuanye = new Label(1, 0, "专业");
        sheet.addCell(zhuanye);
        Label jingzhengli = new Label(2, 0, "专业竞争力");
        sheet.addCell(jingzhengli);

        Label qinghua = new Label(0, 1, "清华大学");
        sheet.addCell(qinghua);
        Label jisuanji = new Label(1, 1, "计算机专业");
        sheet.addCell(jisuanji);
        Label gao = new Label(2, 1, "高");
        sheet.addCell(gao);

        Label beida = new Label(0, 2, "北京大学");
        sheet.addCell(beida);
        Label falv = new Label(1, 2, "法律专业");
        sheet.addCell(falv);
        Label zhong = new Label(2, 2, "中");
        sheet.addCell(zhong);

        Label ligong = new Label(0, 3, "北京理工大学");
        sheet.addCell(ligong);
        Label hangkong = new Label(1, 3, "航空专业");
        sheet.addCell(hangkong);
        Label di = new Label(2, 3, "低");
        sheet.addCell(di);

        // 把创建的内容写入到输出流中,并关闭输出流
        workbook.write();
        workbook.close();
        os.close();
    }

    public static void main(String[] args) throws IOException, RowsExceededException, WriteException {
        try {
            // 打开文件
            WritableWorkbook book = Workbook.createWorkbook(new File("./测试.xls"));
            // 生成名为“第一页”的工作表,参数0表示这是第一页
            WritableSheet sheet = book.createSheet("第一页", 0);
            
            // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)的内容
            Label label = new Label(0, 0, "测试");
            // 将定义好的单元格添加到工作表中
            sheet.addCell(label);
            
            jxl.write.Number number = new jxl.write.Number(1, 0, 1234567);
            sheet.addCell(number);
            
            jxl.write.Label s = new jxl.write.Label(1, 2, "水电站");
            sheet.addCell(s);
            
            // 写入数据并关闭文件
            book.write();
            book.close(); // 最好在finally中关闭,此处仅作为示例不太规范
        } catch (Exception e) {
            System.out.println(e);
        }
    }

}

 

 

 

实例二:3个功能-----从excel文件F:\红楼人物.xls读取数据;生成新的excel文件F:\红楼人物2.xls;修改原excel一个单元并输出为F:\红楼人物3.xls。

package yxCollector.yxCollector;

import jxl.*;
import jxl.format.UnderlineStyle;
import jxl.write.*;
import jxl.write.Number;
import jxl.write.Boolean;
import jxl.Cell;

import java.io.*;

public class xls {
    public xls() {
    }

    /*** 读取Excel */
    public static void readExcel(String filePath) {
        try {
            InputStream is = new FileInputStream(filePath);
            Workbook rwb = Workbook.getWorkbook(is);
            // 这里有两种方法获取sheet表:名字和下标(从0开始)
            // Sheet st = rwb.getSheet("original");
            Sheet st = rwb.getSheet(0);
            /**
             * //获得第一行第一列单元的值 Cell c00 = st.getCell(0,0); //通用的获取cell值的方式,返回字符串
             * String strc00 = c00.getContents(); //获得cell具体类型值的方式
             * if(c00.getType() == CellType.LABEL) { LabelCell labelc00 =
             * (LabelCell)c00; strc00 = labelc00.getString(); } //输出
             * System.out.println(strc00);
             */
            // Sheet的下标是从0开始
            // 获取第一张Sheet表
            Sheet rst = rwb.getSheet(0);
            // 获取Sheet表中所包含的总列数
            int rsColumns = rst.getColumns();
            // 获取Sheet表中所包含的总行数
            int rsRows = rst.getRows();
            // 获取指定单元格的对象引用
            for (int i = 0; i < rsRows; i++) {
                for (int j = 0; j < rsColumns; j++) {
                    Cell cell = rst.getCell(j, i);
                    System.out.print(cell.getContents() + " ");
                }
                System.out.println();
            }
            // 关闭
            rwb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /** 输出Excel */
    public static void writeExcel(OutputStream os) {
        try {
            /**
             * 只能通过API提供的 工厂方法来创建Workbook,而不能使用WritableWorkbook的构造函数,
             * 因为类WritableWorkbook的构造函数为 protected类型:方法一:直接从目标文件中读取
             * WritableWorkbook wwb = Workbook.createWorkbook(new
             * File(targetfile));方法 二:如下实例所示 将WritableWorkbook直接写入到输出流
             */
            WritableWorkbook wwb = Workbook.createWorkbook(os);
            // 创建Excel工作表 指定名称和位置
            WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
            /************** 往工作表中添加数据 *****************/
            // 1.添加Label对象
            Label label = new Label(0, 0, "测试");
            ws.addCell(label);
            // 添加带有字型Formatting对象
            WritableFont wf = new WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
            WritableCellFormat wcf = new WritableCellFormat(wf);
            Label labelcf = new Label(1, 0, "this is a label test", wcf);
            ws.addCell(labelcf);
            // 添加带有字体颜色的Formatting对象
            WritableFont wfc = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,
                    UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.DARK_YELLOW);
            WritableCellFormat wcfFC = new WritableCellFormat(wfc);
            Label labelCF = new Label(1, 0, "Ok", wcfFC);
            ws.addCell(labelCF);

            // 2.添加Number对象
            Number labelN = new Number(0, 1, 3.1415926);
            ws.addCell(labelN);
            // 添加带有formatting的Number对象
            NumberFormat nf = new NumberFormat("#.##");
            WritableCellFormat wcfN = new WritableCellFormat(nf);
            Number labelNF = new jxl.write.Number(1, 1, 3.1415926, wcfN);
            ws.addCell(labelNF);

            // 3.添加Boolean对象
            Boolean labelB = new jxl.write.Boolean(0, 2, true);
            ws.addCell(labelB);
            Boolean labelB1 = new jxl.write.Boolean(1, 2, false);
            ws.addCell(labelB1);
            // 4.添加DateTime对象
            jxl.write.DateTime labelDT = new jxl.write.DateTime(0, 3, new java.util.Date());
            ws.addCell(labelDT);

            // 5.添加带有formatting的DateFormat对象
            DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
            WritableCellFormat wcfDF = new WritableCellFormat(df);
            DateTime labelDTF = new DateTime(1, 3, new java.util.Date(), wcfDF);
            ws.addCell(labelDTF);
            // 6.添加图片对象,jxl只支持png格式图片
            File image = new File("f:\\1.png");
            WritableImage wimage = new WritableImage(0, 4, 6, 17, image);
            ws.addImage(wimage);
            // 7.写入工作表
            wwb.write();
            wwb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 将file1拷贝后,进行修改并创建输出对象file2 单元格原有的格式化修饰不能去掉,但仍可将新的单元格修饰加上去,
     * 以使单元格的内容以不同的形式表现
     */
    public static void modifyExcel(File file1, File file2) {
        try {
            Workbook rwb = Workbook.getWorkbook(file1);
            WritableWorkbook wwb = Workbook.createWorkbook(file2, rwb);// copy
            WritableFont wfc = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD, false,
                    UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLUE);
            WritableCellFormat wcfFC = new WritableCellFormat(wfc);
            WritableSheet ws = wwb.getSheet(0);
            WritableCell wc = ws.getWritableCell(0, 0);
            // 判断单元格的类型,做出相应的转换
            if (wc.getType() == CellType.LABEL) {
                Label labelCF = new Label(0, 0, "人物(新)", wcfFC);
                ws.addCell(labelCF);
                // Label label = (Label)wc;
                // label.setString("被修改");
            }
            wwb.write();
            wwb.close();
            rwb.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 测试
    public static void main(String args[]) {
        try {
            // 读EXCEL
            xls.readExcel("F:/红楼人物.xls");
            // 输出EXCEL
            File filewrite = new File("F:/红楼人物2.xls");
            filewrite.createNewFile();
            OutputStream os = new FileOutputStream(filewrite);
            xls.writeExcel(os);
            // 修改EXCEL
            xls.modifyExcel(new File("F:/红楼人物.xls"), new File("F:/红楼人物3.xls"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

            <dependency>
                <groupId>net.sourceforge.jexcelapi</groupId>
                <artifactId>jxl</artifactId>
                <version>2.6.12</version>
            </dependency> 

 

jxl读写excel

标签:

原文地址:http://www.cnblogs.com/destim/p/5423620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!