`

java 在原有的excel模板上追加新数据

 
阅读更多
引用

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class Test {
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    private static File hasFile;

    /**
     * 同步操作,防止并发。
     *
     * @param args
     * @return
     * @throws IOException
     * @throws RowsExceededException
     * @throws WriteException
     */
    public synchronized static String[] write(String[] args)
            throws IOException, RowsExceededException, WriteException {

        // 文件路径 
        // 判断文件是否存在,如果存在就不创建,追加,如果不存在则创建文件并追加。 
        WritableWorkbook book = Workbook.createWorkbook(getHasFile());
        book.setProtected(true);
        // -- 第一个参数是Sheet名,第二个参数是Sheet下标 
        // -- 下标是整数,只起标识作用,建立的时候会以create顺序建立,本例生成的EXCEL文件第一个Sheet是sheet1 
        WritableSheet sheet = book.createSheet("第一页", 1);
        sheet.setColumnView(0, 20);
        sheet.setColumnView(1, 20);
        sheet.setColumnView(2, 5);
        sheet.setColumnView(3, 20);
        sheet.setColumnView(4, 20);
        sheet.setColumnView(5, 20);
        sheet.setColumnView(6, 20);
        sheet.setColumnView(7, 20);
        sheet.setColumnView(8, 20);
        sheet.getSettings().setProtected(true);
        sheet.getSettings().setPassword("xxxx");//设置密码 
        String[] title = { "支付宝交易号", "订单号", "交易总金额", "商品名称/订单名称", "商品描述/订单备注",
                "买家支付宝账号", "交易状态", "sign", "交易时间" };
        for (int i = 0; i < title.length; i++) {
            Label lable = new Label(i, 0, title[i]);
            sheet.addCell(lable);
        }
        // 初次创建,写入一行。 
        for (int i = 0; i < title.length; i++) {
            Label lable = new Label(i, 1, args[i]);
            sheet.addCell(lable);
        }
        // 每次写入数据时,写到最后一行。 
        book.write();
        book.close();
        System.out.println("写入成功");
        return null;
    }

    /**
     * 追加excel
     *
     * @param args
     * @throws IOException
     * @throws BiffException
     * @throws WriteException
     * @throws RowsExceededException
     */
    public static void addExcel(File file, String[] args) throws BiffException,
            IOException, RowsExceededException, WriteException {
        Workbook book = Workbook.getWorkbook(file);
        Sheet sheet = book.getSheet(0);
        // 获取行 
        int length = sheet.getRows();
        System.out.println(length);
        WritableWorkbook wbook = Workbook.createWorkbook(file, book); // 根据book创建一个操作对象 
        WritableSheet sh = wbook.getSheet(0);// 得到一个工作对象 
        // 从最后一行开始加 
        for (int i = 0; i < args.length; i++) {
            Label label = new Label(i, length, args[i]);
            sh.addCell(label);
        }
        wbook.write();
        wbook.close();
    }

    /**
     * 判断文件是否已经写入
     *
     * @param filename
     * @return
     */
    public static boolean filecheck(String filename) {
        boolean flag = false;
        File file = new File(filename);
        if (file.exists()) {
            flag = true;
        }
        setHasFile(file);
        return flag;
    }

    /**
     * 不管神马类型,都转换成string
     *
     * @param obj
     * @return
     */
    public static String converToString(Object obj) {
        return "";
    }

    public static void main(String[] args) throws RowsExceededException,
            WriteException, IOException, BiffException {
        String filepath = Test.class.getResource("/").getPath()
                + sdf.format(new Date()) + ".xls";
        String[] str = { "20101020102032032", "2012203203232032032", "50",
                "100元朗识币", "这个订单没有备注", "1234566@163.com", "STATU_SUCCESS",
                "hahah", sdf.format(new Date()) };
        boolean has = Test.filecheck(filepath);
        // 如果存在 
        if (has)
            addExcel(getHasFile(), str);
        else {
            write(str);
        }

    }

    /**
     * @return the hasFile
     */
    public static File getHasFile() {
        return hasFile;
    }

    /**
     * @param hasFile
     *            the hasFile to set
     */
    public static void setHasFile(File hasFile) {
        Test.hasFile = hasFile;
    }

分享到:
评论

相关推荐

    java 如何往已经存在的excel表格里面追加数据的方法

    在本文中,我们将介绍如何使用 Java 往已经存在的 Excel 表格里面追加数据。 导入必要的 jar 包 要使用 Apache POI 库,首先需要下载并导入必要的 jar 包。可以从以下网址下载 poi.jar 和 jxl.jar 文件: * poi....

    java,poi 实现数据追加功能

    数据追加功能是指在已有数据的基础上,向Excel文件的最后一行或指定位置插入新的数据行。在Java和POI中,这通常涉及到创建一个工作簿对象,打开现有的工作表,找到最后一行或者特定的行,然后在该行下方添加新的...

    java向excel插入数据,更新excel内容数据

    可以对excel内插入数据 填写要插入数据的行号 就可以用了 简单方便

    jxls利用模板生成excel文件

    4. **结果导出**:最后,`jxls`将填充后的模板转换为一个新的Excel文件,这个文件包含了所有来自数据模型的信息。 ### 三、jxls的关键特性 1. **动态数据处理**:支持条件逻辑、循环、合并单元格等复杂操作,使得...

    基于Java向zip压缩包追加文件

    在Java编程中,向现有的ZIP压缩包追加文件通常需要经过解压、修改、再压缩的步骤,因为标准的Java ZIP库(如`java.util.zip`包)并不直接支持追加到已存在的ZIP文件。本篇文章将深入探讨如何实现这个功能,主要关注...

    Java往文件结尾追加数据

    Java往文件结尾追加数据(用Eclipse打开。)主要代码:RandomAccessFile vRandomAccessFile = new RandomAccessFile&#40;sFile,"rw"&#41;;vRandomAccessFile.writeBytes(sInput);

    opi java操作excel表格 无脑复制 无脑粘贴 excel追加 创建

    在给定的标题和描述中,“opi java操作excel表格 无脑复制 无脑粘贴 excel追加 创建”提到了使用Java进行Excel表格的操作,包括复制、粘贴、追加数据以及创建新的Excel文件。这通常涉及到Apache POI库,一个强大的...

    Java_批量导出大数据量Excel方法.zip

    在Java开发中,批量导出大数据量到Excel是一项常见的任务,尤其在数据分析、报表生成或者数据交换场景下。为了高效地处理这种情况,开发者通常需要掌握一些特定的技术和策略。本资料"Java_批量导出大数据量Excel方法...

    java 利用POI 导入导出Excel

    前几天项目上需要加上导入导出,在网上找了一下,么有合适的!于是自己写,源码里所需要的jar都有,从jsp界面进行Excel的导入导出,并可用于上传和下载。如有所用,喜不自禁,分享,开源的意义。 写的不是特别好,不...

    poi操作excel模板的各种方式

    利用poi对excel模板的新追加指定的行数,可以复制模板的某一行,包含样式。获取数据,往excel模板写入。包括各种对excel复制的操作,改变样式等等。集合很多对excel的操作的代码。都是工程实践用的。

    java多线程导出excel(千万级别)优化

    Java多线程导出Excel是处理大数据量时的一种高效策略,尤其在面对千万级别的数据时。传统的Apache POI库在处理大规模数据时可能会遇到栈溢出(StackOverflowError)和内存溢出(OutOfMemoryError)等问题,因为这些...

    python3中关于excel追加写入格式被覆盖问题(实例代码)

    通过调用`append_data_to_excel`函数,可以在不破坏原有格式的情况下追加新的数据行。 总结来说,解决Python 3中Excel追加写入格式被覆盖的问题,关键在于使用`xlrd`和`xlutils`库,而不是仅依赖`xlwt`。通过这些库...

    Java 文件追加操作

    在Java编程语言中,文件追加操作是一种常见的文件处理任务,尤其在日志记录、数据存储或更新场景中。本文将深入探讨如何在Java中执行文件追加操作,并提供相关示例代码,以便您理解和应用。 一、Java 文件操作基础 ...

    基于python实现在Excel原表数据上,需要追加新的数据

    【作品名称】:基于python实现在Excel原表数据上,需要追加新的数据 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:...

    laview中TXT或Excel测试数据追加保存.vi

    Labview保存数据到同一个文件中时,如果写入出错,会影响之前保存的数据。该模块可以解决写同一文件出错也不影响之前写入的内容,

    Java 实例 - 向文件中追加数据源代码-详细教程.zip

    我们将探讨Java I/O流的概念,特别是FileWriter和BufferedWriter类的用法,以及如何在现有文件内容后追加新的数据。 首先,Java I/O流是处理输入和输出的基础,分为字节流和字符流。在处理文本数据时,我们通常选择...

    纯前端 JS脚本 导出excel 可动态添加数据

    这一技术在数据分析、报表生成以及用户交互场景中具有广泛应用。 首先,我们要理解“纯前端”意味着所有的操作都在用户的浏览器上完成,不依赖于服务器的计算资源。这样可以减少与服务器的通信,提高用户体验,尤其...

    java IO以追加方式写文件FileWrite

    当以追加方式写入文件时,我们希望在文件现有内容的末尾添加新的数据,而不是覆盖原有的内容。这种功能在日志记录、数据备份或者需要不断更新文件信息的场景中非常常见。本篇文章将深入探讨如何使用`FileWriter`类...

    java 追加文件内容

    在Java编程语言中,追加文件内容是一项常见的任务,它涉及到对已有文件的读写操作。下面我们将深入探讨如何在Java中实现这个功能,并提供一个示例代码。 首先,追加文件内容通常需要使用`java.io`包中的`FileWriter...

    通过jxls和poi导出excel的dome

    总之,结合jxls和Apache POI,你可以高效地生成具有复杂格式和逻辑的Excel文件,这在数据分析、报表生成和数据导出等场景中非常有用。这个dome示例将帮助你快速上手并理解这一过程,进一步提升你的Java开发能力。

Global site tag (gtag.js) - Google Analytics