0 0

POI控制模版插入数据5

我现在是利用POI讲一个模版文件的格式放入到了另外一个1.Excel文件里面,然后1.excel文件里面有数据,我想知道我现在怎么向里面插入数据在1.xls最后一行下面增加要求要和第一行样式一样怎么写代码!我用的POI3.7
public class Excel {
    public static void main(String[] args) throws Exception {
    //新那一个Excel
    //writeToBlankExcel();
    //根据Excel模板,生成文件并导入数据
    writeToExcelTemplet();
    }
    /**
     * 新建excel
     * @throws IOException
     */
    public static void writeToBlankExcel() throws IOException{
        HSSFWorkbook wb = new HSSFWorkbook();
        // 建立新HSSFWorkbook对象
        HSSFSheet sheet = wb.createSheet("new sheet");
        // 建立新的sheet对象
        // Create a row and put some cells in it.Rows are 0 based.
        HSSFRow row = sheet.createRow((short) 0);
        // 建立新行
        // Create a cell and put a value in it.
        HSSFCell cell = row.createCell(0); //row.createCell(0);
        // 建立新cell
        cell.setCellValue(1222);// 设置cell的整数类型的值
        // Or do it on one line.
        row.createCell(1).setCellValue(1.2);
        // 设置cell浮点类型的值
        row.createCell(2).setCellValue("test");
        // 设置cell字符类型的值
        row.createCell(3).setCellValue(true);
        // 设置cell布尔类型的值
        HSSFCellStyle cellStyle = wb.createCellStyle();
        // 建立新的cell样式
        cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
        // 设置cell样式为定制的日期格式
        HSSFCell dCell = row.createCell(4);
        dCell.setCellValue(new Date());
        // 设置cell为日期类型的值
        dCell.setCellStyle(cellStyle);
        // 设置该cell日期的显示格式
        HSSFCell csCell = row.createCell(5);
        //csCell.setEncoding(HSSFCell.ENCODING_UTF_16);
        // 设置cell编码解决中文高位字节截断
        csCell.setCellValue("中文测试_Chinese Words Test");
        // 设置背景色
        HSSFCellStyle style = wb.createCellStyle();
        style.setFillForegroundColor(new HSSFColor.BLACK().getIndex());
        style.setFillBackgroundColor(new HSSFColor.ROSE().getIndex());
        style.setFillPattern(HSSFCellStyle.SPARSE_DOTS);
        HSSFCell cell1 = row.createCell(6);
        cell1.setCellStyle(style);
        //cell1.setCellValue("X");
        //setCellValue 被  cell1.setCellValue(new HSSFRichTextString("aaaaaaaaaaaa")); 替换
        cell1.setCellValue(new HSSFRichTextString("aaaaaaaaaaaa"));
        // 设置背景色
        HSSFCellStyle style1 = wb.createCellStyle();
        style1.setFillForegroundColor(new HSSFColor.GREY_40_PERCENT().getIndex());
        style1.setFillBackgroundColor(new HSSFColor.GREY_40_PERCENT().getIndex());
        style1.setBorderBottom((short) 1);
        style1.setBorderTop((short) 1);
        style1.setBorderLeft((short) 1);
        style1.setBorderRight((short) 1);
        /**
         * 注意这句代码, style1.setFillPattern, 如果你在你的程序中不设置fill pattern,那么
         * 你上面设置的前景色和背景色就显示不出来.
         */
        style1.setFillPattern(HSSFCellStyle.SPARSE_DOTS);
        HSSFCell cell11 = row.createCell(7);
        cell11.setCellValue("X11");
        cell11.setCellStyle(style1);
        // 数字格式化
        HSSFCellStyle st = wb.createCellStyle();
        // 建立新的cell样式
        st.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0"));
        HSSFCell cell12 = row.createCell(8);
        cell12.setCellValue((double) 10000000);
        cell12.setCellStyle(st);
        // 设置中西文结合字符串
        row.createCell(9).setCellType(HSSFCell.CELL_TYPE_ERROR);
        // 建立错误cell
        // Write the output to a file
        FileOutputStream fileOut = new FileOutputStream("d:/doc/2.xls");
        wb.write(fileOut);
        fileOut.close();
    }
   
    /**
     * 导入数据到excel模板中
     * @throws IOException
     */
  

   
    public static void  writeToExcelTemplet() throws IOException{
    FileInputStream fi = null;
    HSSFWorkbook hwb = null;
    HSSFRow row = null;//行
    HSSFCell cell = null;//列
    //1,读取Excel
    fi = new FileInputStream("d:/doc/1.xls");
    hwb = new HSSFWorkbook(fi);
    //2,取得第一个Sheet
    HSSFSheet sheet = hwb.getSheetAt(0);
    int rows = sheet.getLastRowNum();//行数, base 0 
    int cols = -1;
    System.out.println("rows: " + (rows+1));
    for (int i = 0 ; i <= rows ; i++) {//遍历行
    row = sheet.getRow(i);//取得行
    cols = row.getLastCellNum();//取得最后一列有序号 base 1
    System.out.print("第["+ (i+1) +"]行有["+ (cols) +"]列(base 1): ");
    for (int j = 0 ; j < cols ; j++) {//遍历列
    cell = row.getCell(j);
    Object value = null;
   
   
    if (null != cell) {
    switch (cell.getCellType()) {
                   case HSSFCell.CELL_TYPE_NUMERIC: // 数值型
                        if (HSSFDateUtil.isCellDateFormatted(cell)) {
                        //如果是date类型则 ,获取该cell的date值
                        value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString();
                        System.out.print(value);
                        }else{//纯数字
                       value = cell.getNumericCellValue() + 1;//数字加一
                        }
                        System.out.print(value);
                        cell.setCellValue((Double)value);
                       break;
                   /* 此行表示单元格的内容为string类型 */
                   case HSSFCell.CELL_TYPE_STRING: // 字符串型
                       value = cell.getRichStringCellValue().toString();
                       System.out.print(value);
                       break;
                   case HSSFCell.CELL_TYPE_FORMULA://公式型
                       //读公式计算值
                        value = String.valueOf(cell.getNumericCellValue());
                        if(value.equals("NaN")){//如果获取的数据值为非法值,则转换为获取字符串
                            value = cell.getRichStringCellValue().toString();
                        }
                        //cell.getCellFormula();读公式
                        System.out.print(value);
                        break;
                   case HSSFCell.CELL_TYPE_BOOLEAN://布尔
                        value = " "+ cell.getBooleanCellValue();
                        System.out.print(value);
                        break;
                   /* 此行表示该单元格值为空 */
                   case HSSFCell.CELL_TYPE_BLANK: // 空值
                       value = "";
                       System.out.print(value);
                       break;
                   case HSSFCell.CELL_TYPE_ERROR: // 故障
                       value = "";
                       System.out.print(value);
                       break;
                   default:
                       value = cell.getRichStringCellValue().toString();
                    System.out.print(value);
                    }
    }

    }
    System.out.println();
    }
   
    sheet.protectSheet(new String("333"));
    hwb.write(new FileOutputStream("d:/doc/2_test_excel_结果.xls"));

    }

}

2012年7月12日 10:11
目前还没有答案

相关推荐

    利用poi+word模版书签,向word中插入数据

    本教程将深入讲解如何利用Apache POI的XWPF模块结合Word模板中的书签,实现数据的动态插入,从而创建个性化的Word文档。 首先,我们需要理解Apache POI的XWPF模块。XWPF(XML Word Processing)是POI项目的一部分,...

    poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行

    标题中的“poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行”涉及到了Apache POI库的使用,这是一个Java API,专门用于处理Microsoft Office格式的文件,如Excel。以下是对这个主题的详细解释: Apache ...

    poi实现导入数据到excel模板

    poi实现导入数据到excel模板,本来想上传poi的jar包,谁知限制我只能上传15M的文件,汗。。。。。 不知道啥时候开始要分了... 代码见: https://github.com/thisisnohi/nohi-doc poi实现导入数据到excel模板。...

    Java Poi流 根据Word模板插入相应的文本、表格和图片,生成新的Word报告

    在本主题中,我们将深入探讨如何使用Java POI流处理Word模板,插入文本、表格和图片,以及生成新的Word报告。 1. **Java POI流处理Word模板**: - POI API提供了`XWPFDocument`类来处理`.docx`文件,这是Word 2007...

    Java Poi流根据Word模板插入相应的文本、表格和图片,并生成新的Word报告。

    在这个场景中,我们关注的是如何利用Java POI库通过Word模板生成包含特定文本、表格和图片的报告。 首先,我们需要了解Java POI中的XWPFDocument类,它是用来处理.docx文件的。XWPFDocument可以读取、修改和创建...

    java使用poi操作.doc word模板替换,循环插入表格

    本篇文章将深入探讨如何利用POI库在Word文档中进行模板替换以及循环插入表格的操作。 首先,我们需要理解Apache POI的工作原理。POI提供了HWPFOI(用于处理老版的.doc文件)和XWPF(用于处理新版的.docx文件)两个...

    java使用 POI Excel模板导出数据

    例如,如果要在某列批量插入数据,可以遍历行,对每个单元格设置新的值: ```java List&lt;String&gt; dataList = ... // 数据列表 for (int i = 0; i (); i++) { XSSFRow row = sheet.getRow(i + 1); // 假设第一行为...

    POI操作Word中插入文本和图片

    在本文中,我们将深入探讨如何使用Apache POI在Word文档中插入文本和图片,这对于创建动态报告模板尤其有用。 一、Apache POI基础 Apache POI提供了一系列接口和类,用于读写微软的Office文件格式。对于Word处理,...

    Apache poi 根据word模板生成word报表 替换 循环列表 图片

    2. **循环列表**:要实现循环列表,你需要遍历一个数据集合(如ArrayList或LinkedList),并在每次迭代时将数据插入到模板中适当的位置。这可以通过创建新的段落或合并字段来完成,确保每个迭代都添加到正确的位置。...

    poi实现world文档动态插入表格

    应公司业务要求,需要在world文档中生成表格,最开始同事使用的freemarker操作xml标签可以实现world中插入表格, 但是每次修改模板需要改xml文件,几万行中去找对应的标签然后修改,容易找错位置并且电脑非常卡,相当麻烦;...

    使用poi根据模版生成word文档并转换成PDF文件

    模版生成通常涉及预先定义好的Word文档,其中包含占位符,这些占位符在程序运行时会被动态替换为实际数据。 1. **使用POI读取和编辑Word模板**: - 初始化`Document`对象:首先,你需要加载Word模板文件,这可以...

    使用java Apache poi 根据word模板生成word报表例子

    使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持。 使用说明:https://blog.csdn.net/u012775558/article/details/79678701

    Java通过POI读取Excel遍历数据,批量生成word文档

    例如,如果你的Excel数据是一系列的员工信息,模板中可能有一个占位符"{name}"用于插入员工姓名: ```java import org.apache.poi.xwpf.usermodel.*; // ... XWPFDocument doc = new XWPFDocument(); ...

    POI使用word模板文件循环输出行并导出word

    3. **定义数据源**:确定你要插入的数据源。这可以是数据库查询结果、CSV文件或者其他任何可以迭代的数据结构。 4. **循环处理**:遍历数据源的每一行,为每一条数据创建一个新的表格行。使用`XWPFTable`的`...

    poi操作word模板

    在"poi操作word模板"的场景中,我们主要关注如何使用Apache POI库来自动化填充Word文档模板,这在批量生成报告、合同或其他需要标准化格式但需个性化数据的文档时非常有用。 首先,理解Apache POI的基本概念是必要...

    POI根据模板导出word,实现文字、图片、表格、图表的替换生成。支持生成多种结构的表格、图表,关键代码都添加了注释,简单易懂

    实现了POI根据模板导出word,实现文字、表格、图表的替换生成。支持生成多种结构的表格、图表,关键代码都添加了注释,简单易懂。 其中表格和图表都写了两种实现方式,既可以只传简单的参数生成多个同结构的表格和...

    java基于poi通过excel模板导出

    在处理模板导出时,通常我们会选择XSSFWorkbook来创建.xlsx文件,因为它是基于XML的,更适合于数据的动态插入和更新。 1. **创建Excel模板**:模板是预先设计好的Excel文件,包含了静态格式和样式。你可以使用...

    POI模版导出excel

    4. **插入数据**:使用POI API动态插入数据到模板中,替换占位符。可以使用`setCellValue()`方法为单元格设置值,`insertNewRow(int index)`创建新行,`createCellStyle()`创建新的样式,`applyCellStyle(CellStyle ...

    FreeMarker+poi 模板生成word+导入图片

    结合FreeMarker和Apache POI,我们可以创建一个模板Word文档,其中包含占位符,然后使用POI读取和填充这个模板,同时插入图片,生成最终的动态Word文档。以下是这个过程的大致步骤: 1. **创建模板**: 使用...

Global site tag (gtag.js) - Google Analytics