java – 使用jxl将数据添加到Excel文件

我正在使用jxl创建一个excel文件.首先应该只包含一些关于样式的格式和信息.然后,每当有人向其添加新数据时,都应该更新它.
public class WriteExcel {

    private static WritableWorkbook workbook;
    private static WritableCellFormat timesStandard;
    private String inputFile;
    final private static int FONT_SIZE = 12;


    public void setOutputFile(String inputFile) {
        this.inputFile = inputFile;
    }

    private void prepareSheet(WritableSheet sheet) throws WriteException {
        sheet.mergeCells(0,1,0);
        sheet.mergeCells(3,4,0);
        sheet.mergeCells(6,7,0);

        WritableFont times12pt = new WritableFont(WritableFont.TIMES,FONT_SIZE);
        timesStandard = new WritableCellFormat(times12pt);

        CellView cv = new CellView();
        cv.setFormat(timesStandard);
    }

    public void write() throws IOException,WriteException {
        File file = new File(inputFile);
        WorkbookSettings wbSettings = new WorkbookSettings();
        wbSettings.setLocale(new Locale("en","EN"));       

        WritableWorkbook workbook = Workbook.createWorkbook(file,wbSettings);
        workbook.createSheet("First",0); 
        WritableSheet excelSheet = workbook.getSheet(0);
        prepareSheet(excelSheet);

        workbook.write();
        workbook.close();
    }

    public static void main(String[] args) throws WriteException,IOException {
        WriteExcel test = new WriteExcel();
        test.setOutputFile("c:/Users/H/Desktop/test.xls");
        test.write();
    }
}

我知道我需要另一个允许我访问该文件并向其添加一些数据的类:

class Modify {

    private static Logger logger = Logger.getLogger(Modify.class);
    private File inputWorkbook;
    private File outputWorkbook;

    public Modify(String input,String output) {
        inputWorkbook = new File(input);
        outputWorkbook = new File(output);
        logger.info("Input file:  " + input);
        logger.info("Output file:  " + output);
    }

    public void readWrite() throws IOException,BiffException,WriteException {
        logger.info("Reading...");
        Workbook w1 = Workbook.getWorkbook(inputWorkbook);

        logger.info("Copying...");
        WritableWorkbook w2 = Workbook.createWorkbook(outputWorkbook,w1);

        if (inputWorkbook.getName().equals("test.xls")) {
            modify(w2);
        }

        w2.write();
        w2.close();
        logger.info("Done");
    }

    private void modify(WritableWorkbook w) throws WriteException {
        logger.info("Modifying...");

        WritableSheet sheet = w.getSheet("First");

        //createContent(sheet); // contains methods responsible for adding data,for example:
        addNumber(sheet,cols,rows,2);

    private static void addNumber(WritableSheet sheet,int column,int row,double d) throws WriteException,RowsExceededException {
        Number number;
        number = new Number(column,row,d,timesStandard);
        sheet.addCell(number);

    }
}

但我最终得到一个空白的Excel文件,仅包含合并的单元格.

如何介绍修改?

解决方法

既然你正在操作一个不是w2类的成员的WritableWorkbook对象,你不应该让你的modify()方法不是void而是返回一个WritableWorkbook吗?

在我看来,当你调用modify()时会实现一个新的,但是由于范围的原因,最后的所有更改都会被删除.

最后你会得到类似的东西

private WritableWorkbook modify(WritableWorkbook w) throws WriteException {
    logger.info("Modifying...");

    WritableSheet sheet = w.getSheet("First");

    //createContent(sheet); // contains methods responsible for adding data,for example:
    addNumber(sheet,2);
    return sheet;
    }

基本上.对addNumber的类似修改似乎也是如此.然后相应的调用将是sheet = addNumber(sheet,2);和w2 =修改(w2);

相关文章

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个...
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:...
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程...