读取指定excel,修改并某个值并另存到指定路径

HSSFWorkBook是解析excel2007以前的版本(xls)
之后的版本使用XSSFWrokBook(xlsx)

附:处理excel2007之后的版本代码:

package gbyp.autoQuery.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.channels.FileChannel;
import java.util.Date;
import java.util.Iterator;

import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFHyperlink;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import xsf.IContextDictionary;
import xsf.data.DBManager;
import xsf.data.DataRow;
import xsf.data.DataTable;
import xsf.data.Sql;
import xsf.web.HttpContext;
import xsf.web.IAction;

public class ExcelExport {

    public static void main(String[] args) {
        ExcelExport ee = new ExcelExport();
        ee.writeExcel2();
    }

    public void writeExcel2() {
        // 声明excel对象
        XSSFWorkbook wb = null;
        // 声明poi流
        // POIFSFileSystem fs=null;
        // 写读取的文件路径
        String path = "E:/需要完善的项目清单.xlsx";
        try {

            // 创建文件流 创建excell对象
            wb = new XSSFWorkbook(new FileInputStream(path));

            // 获得工作薄, 得到工作表
            XSSFSheet sheet = wb.getSheetAt(0);

            boolean isOne = true;
            for (Iterator<Row> iter = sheet.rowIterator(); iter.hasNext();) {
                // 得到行
                Row row = iter.next();
                // 迭代列
                // 循环每一行的所有列
                int i = 0;
                for (Iterator<Cell> cellIter = row.cellIterator(); cellIter
                        .hasNext();) {
                    // 得到列对象
                    Cell cell = cellIter.next();
                    if (i == 1) {
                        String content = cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC ? cell
                                .getNumericCellValue() + ""
                                : cell.getStringCellValue();
                        if (!content.equals("项目名称")) {
                            //数据库取值并赋值
                            cell.setCellValue("****项目");
                        }
                    }

                    i++;
                }
                if (isOne) {
                    isOne = false;
                }
            }

            String path2 = "E:/需要完善的项目清单2.xlsx";
            // 创建输出流
            OutputStream out = new FileOutputStream(path2);
            // 将数据写入文件
            wb.write(out);
            // 关闭文件
            out.close();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

附:处理excel2007之前版本代码:

package gbyp.autoQuery.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.channels.FileChannel;
import java.util.Date;
import java.util.Iterator;
import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFHyperlink;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.util.CellRangeAddress;

import xsf.IContextDictionary;
import xsf.data.DBManager;
import xsf.data.DataRow;
import xsf.data.DataTable;
import xsf.data.Sql;
import xsf.web.HttpContext;
import xsf.web.IAction;

public class ExcelExport {

    public static void main(String[] args) {
        ExcelExport ee = new ExcelExport();
        ee.writeExcel2();
    }

    public void writeExcel2() {
        // 声明excel对象
        HSSFWorkbook wb = null;
        // 声明poi流
        POIFSFileSystem fs = null;
        // 写读取的文件路径
        String path = "E:/需要完善的项目清单.xls";
        try {

            // 设置要读取的文件路径
            // 创建文件流
            fs = new POIFSFileSystem(new FileInputStream(path));

            // HSSFWorkBook相当于一个excel文件,HSSFWorkBook是解析excel2007以前的版本(xls)
            // 之后的版本使用XSSFWrokBook(xlsx)
            // 创建excell对象
            wb = new HSSFWorkbook(fs);

            // 获得工作薄
            // 得到工作表
            HSSFSheet sheet = wb.getSheetAt(0);

            boolean isOne = true;

            for (Iterator<Row> iter = sheet.rowIterator(); iter.hasNext();) {
                // 得到行
                Row row = iter.next();
                // 迭代列
                // 循环每一行的所有列
                int i = 0;
                for (Iterator<Cell> cellIter = row.cellIterator(); cellIter.hasNext();) {
                    // 得到列对象
                    Cell cell = cellIter.next();
                    if (i == 1) {
                        String content = cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC ? cell.getNumericCellValue() + "": cell.getStringCellValue();
                        if(!content.equals("项目名称")){
                            cell.setCellValue("****项目");
                        }
                    }

                    i++;
                }
                if (isOne) {

                    isOne = false;
                }
            }

            String path2 = "E:/需要完善的项目清单2.xls";
            // 创建输出流
            OutputStream out = new FileOutputStream(path2);
            // 将数据写入文件
            wb.write(out);
            // 关闭文件
            out.close();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

时间: 2024-10-23 13:40:03

读取指定excel,修改并某个值并另存到指定路径的相关文章

读取页面元素的onclick属性值 禁止重定向 获取url重定向后Location头指定的重定向目标

(1) 读取页面元素的onclick属性值 html代码: <a id='linka' onclick="alert('ok');">链接</a> 取出item身上onclick属性的值:alert('ok'); 实现: IHTMLElement *item;// 已经找到该元素 CComQIPtr<IHTMLElement> spElem(item); VARIANT var; spElem->get_onclick(&var); C

sharepoint 2010 调查 / 选项 / 将(指定自定义值)修改为(其他)/ jquery 修改input 值与绑定(for) label,修改label的值

<input name="ctl00$m$g_5dfea861_4535_4b41_9b1b_24242d008905$ctl00$ctl01$ctl01$ctl00$ctl00$ctl04$ctl00$RadioButtons" id="ctl00_m_g_5dfea861_4535_4b41_9b1b_24242d008905_ctl00_ctl01_ctl01_ctl00_ctl00_ctl04_ctl00_ctl04" type="radio

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支

SQL修改字段默认值

一.SQL修改字段默认值 alter table 表名 drop constraint 约束名字 说明:删除表的字段的原有约束 alter table 表名 add constraint 约束名字 DEFAULT 默认值 for 字段名称 说明:添加一个表的字段的约束并指定默认值 go 例: alter table T_ping drop constraint DF_T_ping_p_c alter table T_ping add constraint DF_T_ping_p_c DEFAUL

【sql技巧】mysql修改时,动态指定要修改的字段 update `table` set (case when ....) = 1 where id = xx

如果你点进了这篇帖子,那么你一定遇到了跟我一样的问题.别看题目的set case when...,我一开始也是第一反应是用case when但是发现并不好使. 问题呢,说得高大上一点:动态指定要修改的字段. 其实小白在这里并没找到我以为的解决方法[笑哭],但是好歹问题是解决了. 这里是原帖的地址: http://stackoverflow.com/questions/4830191/t-sql-using-a-case-in-an-update-statement-to-update-certa

SQL修改字段默认值、获取字段默认值

一.SQL修改字段默认值 alter table 表名 drop constraint 约束名字 说明:删除表的字段的原有约束 alter table 表名 add constraint 约束名字 DEFAULT 默认值 for 字段名称 说明:添加一个表的字段的约束并指定默认值 go 例: alter table T_ping drop constraint DF_T_ping_p_c alter table T_ping add constraint DF_T_ping_p_c DEFAUL

vue中如何实时修改输入的值

vue中如何实时修改输入的值 经常看到需要对用户输入的值进行实时修改,有时是需要修改为指定的展示内容,有时候是用来校验,禁止用户输入非法数据,总之是一个常见的需求吧,只是自己一直没有特意去关注.思来想去还是有必要了解一下. 操作方法 一直听说各种方式,记得最深的便是利用computed的计算属性,通过set 和 get 来进行修改,其他的也有所见闻.先实现一种,再进行其他其他深究,以及使用好坏. vue文档说明 对于需要使用输入法 (如中文.日文.韩文等) 的语言,你会发现 v-model 不会

jquery实现的统计table表格指定列的单元格值的和

jquery实现的统计t]able表格指定列的单元格值的和:在一些应用中,表格单元格中存放的都是数字,比如学生的分数,那么就有可能将这些分数做加法运算来统计出总分数,下面就通过代码实例介绍一下如何统计某一列单元格中值的和.代码实例: <!DOCTYPE html><html> <head> <meta charset=" utf-8"> <meta name="author" content="http

Asp.Net 读取xml文件中Key的值,并且过滤掉注释内容代码

/// <summary> /// 读取配置文件keys /// </summary> /// <returns></returns> public string _GetKeys() { string filename = Server.MapPath("/") + @"web.config"; XmlDocument xmldoc = new XmlDocument(); XmlReaderSettings set