c# poi写入e_C#操作Excel表格读写合并

重要:本文最后更新于2018-11-13 13:51:34,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗。

前面貌似发过C#操作Excel表格的文章,这里这篇文章只是补充,需要更多操作Excel表格的方法请看C#读写Excel表格文件NPOI方式无需安装office。

合并的功能前面没有讲到,这里的方法大家可以参考参考,单元格的读写建议使用我前面的文章中说的方法,比较靠谱!

package com.cycares.crm.utils.ExcelUtil;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.CellStyle;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.ss.util.CellRangeAddress;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**

* 描 述:Excel文件操作工具类,包括读、写、合并等功能

* 创建时间:2016-7-27

* @author Jibaole

*/

public class ReadExcelUtil {

//%%%%%%%%-------常量部分 开始----------%%%%%%%%%

/**

* 默认的开始读取的行位置为第一行(索引值为0)

*/

private final static int READ_START_POS = 0;

/**

* 默认结束读取的行位置为最后一行(索引值=0,用负数来表示倒数第n行)

*/

private final static int READ_END_POS = 0;

/**

* 默认Excel内容的开始比较列位置为第一列(索引值为0)

*/

private final static int COMPARE_POS = 0;

/**

* 默认多文件合并的时需要做内容比较(相同的内容不重复出现)

*/

private final static boolean NEED_COMPARE = true;

/**

* 默认多文件合并的新文件遇到名称重复时,进行覆盖

*/

private final static boolean NEED_OVERWRITE = true;

/**

* 默认只操作一个sheet

*/

private final static boolean ONLY_ONE_SHEET = true;

/**

* 默认读取第一个sheet中(只有当ONLY_ONE_SHEET = true时有效)

*/

private final static int SELECTED_SHEET = 0;

/**

* 默认从第一个sheet开始读取(索引值为0)

*/

private final static int READ_START_SHEET= 0;

/**

* 默认在最后一个sheet结束读取(索引值=0,用负数来表示倒数第n行)

*/

private final static int READ_END_SHEET = 0;

/**

* 默认打印各种信息

*/

private final static boolean PRINT_MSG = true;

//%%%%%%%%-------常量部分 结束----------%%%%%%%%%

//%%%%%%%%-------字段部分 开始----------%%%%%%%%%

/**

* Excel文件路径

*/

private String excelPath = "data.xlsx";

/**

* 设定开始读取的位置,默认为0

*/

private int startReadPos = READ_START_POS;

/**

* 设定结束读取的位置,默认为0,用负数来表示倒数第n行

*/

private int endReadPos = READ_END_POS;

/**

* 设定开始比较的列位置,默认为0

*/

private int comparePos = COMPARE_POS;

/**

* 设定汇总的文件是否需要替换,默认为true

*/

private boolean isOverWrite = NEED_OVERWRITE;

/**

* 设定是否需要比较,默认为true(仅当不覆写目标内容是有效,即isOverWrite=false时有效)

*/

private boolean isNeedCompare = NEED_COMPARE;

/**

* 设定是否只操作第一个sheet

*/

private boolean onlyReadOneSheet = ONLY_ONE_SHEET;

/**

* 设定操作的sheet在索引值

*/

private int selectedSheetIdx =SELECTED_SHEET;

/**

* 设定操作的sheet的名称

*/

private String selectedSheetName = "";

/**

* 设定开始读取的sheet,默认为0

*/

private int startSheetIdx = READ_START_SHEET;

/**

* 设定结束读取的sheet,默认为0,用负数来表示倒数第n行

*/

private int endSheetIdx = READ_END_SHEET;

/**

* 设定是否打印消息

*/

private boolean printMsg = PRINT_MSG;

//%%%%%%%%-------字段部分 结束----------%%%%%%%%%

public ReadExcelUtil(){}

public ReadExcelUtil(String excelPath){

this.excelPath = excelPath;

}

/**

* 还原设定(其实是重新new一个新的对象并返回)

* @return

*/

public ReadExcelUtil RestoreSettings(){

ReadExcelUtil instance = new ReadExcelUtil(this.excelPath);

return instance;

}

/**

* 自动根据文件扩展名,调用对应的读取方法

*

* @Title: writeExcel

* @Date : 2016-7-27 下午01:50:38

* @param xlsPath

* @throws IOException

*/

public List readExcel() throws IOException{

return readExcel(this.excelPath);

}

/**

* 自动根据文件扩展名,调用对应的读取方法

*

* @Title: writeExcel

* @Date : 2016-7-27 下午01:50:38

* @param xlsPath

* @throws IOException

*/

public List readExcel(String xlsPath) throws IOException{

//扩展名为空时,

if (xlsPath.equals("")){

throw new IOException("文件路径不能为空!");

}else{

File file = new File(xlsPath);

if(!file.exists()){

throw new IOException("文件不存在!");

}

}

//获取扩展名

String ext = xlsPath.substring(xlsPath.lastIndexOf(".")+1);

try {

if("xls".equals(ext)){ //使用xls方式读取

return readExcel_xls(xlsPath);

}else if("xlsx".equals(ext)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值