Excel文件导入导出
/**
* 导入Excel文件数据
*
* @param file 将要导入的Excel文件
* @param fileCheckKeyWord 用于判断导入文件是否正确的关键字符串
* @param keyX 用于判断导入文件是否正确的关键字符串所在的x坐标位置
* @param keyY 用于判断导入文件是否正确的关键字符串所在的y坐标位置
* @param startRow 导入数据开始行数
* @param startLine 导入数据开始列数
*
* @return List《Object[]》
* @throws Exception
*/
public static List<Object[]> excelImport(File file, String fileCheckKeyWord, int keyX, int keyY, int startRow, int startLine) throws Exception{
List<Object[]> dataList = new ArrayList<Object[]>();
InputStream inputStream = new FileInputStream(file);
WorkbookSettings wbs = new WorkbookSettings();
wbs.setSuppressWarnings(true);
Workbook book = Workbook.getWorkbook(inputStream, wbs);
Sheet sh = book.getSheet(0);
//判断选择excel文件是否正确
String typeContent = sh.getCell(keyX, keyY).getContents().trim();
if(!typeContent.equals(fileCheckKeyWord)){
return dataList;
}
//行数
int rows = sh.getRows();
if(rows >= 65536){//超出 excel 03最大行数
return dataList;
}
//列数
int lines = sh.getColumns();
//判断导入的数据是否有误
Object[] dataObjArr = null;
for(int i = startRow; i <= rows; i++){
dataObjArr = new Object[lines - startLine + 1];
for(int j = startLine; j <= lines; j++){
String content = sh.getCell(j, i).getContents().trim();
if(ComFun.strNull(content) && !content.trim().equals("")){
dataObjArr[j - startLine] = content;
} else {
dataObjArr[j - startLine] = "";
}
}
}
return dataList;
}
/**
* 导出EXCEL文件
*
* @param fileName 导出文件名 (为NULL时,文件名称按照时间戳生成)
* @param headCellNames 头部标题名称组
* @param dataList 数据List,与参数headCellNames对应
*/
public static void excelExport(String fileName,
String[] headCellNames, List<Object[]> dataList) throws IOException, WriteException {
if(ComFun.strNull(dataList) && dataList.size() > 0){
if(!ComFun.strNull(fileName)){
fileName = DateFormatUtil.dateToStr(new Date(), DateFormatUtil.TYPE4);
}
String[] cellNames = new String[headCellNames.length + 1];
cellNames[0] = "序号";
for(int i=0; i<headCellNames.length; i++){
cellNames[i+1] = headCellNames[i];
}
WritableWorkbook book = Workbook.createWorkbook(new File("C:\\ACjba\\fileDownload\\" + fileName + ".xls"));// 创建文件
WritableSheet sheet = book.createSheet(fileName, 0);// 创建工作薄
sheet.setName(fileName);
sheet.getSettings().setVerticalFreeze(2);// 冻结前两行
/* 开始创建sheet第一行 */
// 标题字体、样式
WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 12,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLACK);// 设置标题字体
WritableCellFormat titleFormat = new WritableCellFormat(titleFont);// 设置标题格式
titleFormat.setAlignment(Alignment.CENTRE);
titleFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
// 合并单元格
sheet.mergeCells(1, 0, cellNames.length, 0);
// 设置行高
sheet.setRowView(0, 800, false);// 40磅
// label理解为sheet中的单元格,此处在第1列0行加入指定内容、样式
Label titleLabel = new Label(1, 0, fileName, titleFormat);
// 将label加入到sheet中,第一行创建完成
sheet.addCell(titleLabel);
/* 开始创建第二行 */
// 表头字体、样式
WritableFont cellFont = new WritableFont(WritableFont.ARIAL, 9,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLACK);
WritableCellFormat cellFormat = new WritableCellFormat(cellFont);
// 设置自动换行
cellFormat.setWrap(true);
cellFormat.setAlignment(Alignment.CENTRE);
cellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 设置边框
// 设置列宽
for (int i = 1; i <= cellNames.length; i++) {
sheet.setColumnView(i, 20);
sheet.setRowView(1, 440);// 22磅
sheet.addCell(new Label(i, 1, cellNames[i - 1], cellFormat));
}
// 创建第三行
sheet.setRowView(2, 440);// 22磅
/* 循环创建传入集合(第四行以后) */
WritableFont bodyFont = new WritableFont(WritableFont.ARIAL, 9,
WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
Colour.BLACK);
WritableCellFormat bodyFormat = new WritableCellFormat(bodyFont);
// 设置自动换行
bodyFormat.setWrap(true);
bodyFormat.setAlignment(Alignment.CENTRE);
bodyFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
bodyFormat.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 设置边框
int r = 2;
for (int i=0;i<dataList.size();i++) {
sheet.setRowView(r, 440);
sheet.addCell(new Label(1, r, String.valueOf(r - 1), bodyFormat));// 序号
for(int j=2; j<cellNames.length+1; j++){
sheet.addCell(new Label(j, r, String.valueOf(dataList.get(i)[j-2]), bodyFormat));
}
r++;
}
book.write();
book.close();
}
}
Excel文件导入导出的更多相关文章
- NodeJs之EXCEL文件导入导出MongoDB数据库数据
NodeJs之EXCEL文件导入导出MongoDB数据库数据 一,介绍与需求 1.1,介绍 (1),node-xlsx : 基于Node.js解析excel文件数据及生成excel文件. (2),ex ...
- Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)
Excel导入导出工具(简单.好用且轻量级的海量Excel文件导入导出解决方案.) 置顶 2019-09-07 16:47:10 $9420 阅读数 261更多 分类专栏: java 版权声明:本 ...
- Excel文件导入导出(基于Nodejs、exceljs)
Excel导入.导出是大多数项目的管理后台必备功能.几年来使用过多个该功能的实现包,最近一次开发该功能,突然发现一个人气极高(3000+)的包,这里记录一下使用方法. 大凡厉害的技术的文档咋一看都想字 ...
- C# excel文件导入导出
欢迎关注微信公众号 C#编程大全 这里有更多入门级实例帮你快速成长 在C#交流群里,看到很多小伙伴在excel数据导入导出到C#界面上存在疑惑,所以今天专门做了这个主题,希望大家有所收获! 环境:wi ...
- postman 测试Excel文件导入导出功能
1.导入的测试方法 选择form-data,key值填写方法对应的参数,选择File,Value处上传文件即可. 2. 导出的测试方法 在导出文件的时候,响应结果是乱码,然后在测试的时候选择下载,下载 ...
- 用NODEJS处理EXCEL文件导入导出,文件上传
參考文章 http://librajt.github.io/2013/08/04/handle-excel-file-with-nodejs/ 对照了 ExcelJS ,https://github. ...
- CSV文件导入导出MySQL
使用SQLyog 工具导入文件数据到MySQL: Excel文件导入导出: 需要驱动:Microsoft Office 2007驱动 导入需要注意的问题:1.Excel里数值列,默认导入会变成浮点型. ...
- c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出
c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...
- Laravel Excel 实现 Excel-CSV 文件导入导出功能
Laravel Excel 是一款基于 PHPExcel 开发的Laravel框架专用的 Excel/CSV 文件导入导出功能的扩展包,用起来的非常方便. 它的 Github 地址是:https:// ...
随机推荐
- Linux学习总结(19)——Linux中文本编辑器vim特殊使用方法
1. vim比对功能 在linux的环境下 用于观察两个文件的一致性的时候我们一般用diff这个命令来比对,但是这个命令不能你特别详细的比对出 具体的位置或者行对比.这里就用到了vim的对比功能 vi ...
- cocos2d 接 android sdk 的一个小坑 关于armbeabi 和 armbeabi-v7a
cocos2d 接 android sdk 的时候,有些sdk会要求外链到某个工程中,而这个工程的lib文件夹里会包含armbeabi 和 armbeabi-v7a这两个文件夹,如果直接打包会闪退.只 ...
- Dubbo 是一个分布式服务框架
Dubbo 是一个分布式服务框架-----http://www.cnblogs.com/chanshuyi/p/5144288.html
- fzu2143 Board Game
Board Game Accept: 54 Submit: 151Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Descri ...
- Swift 对象创建(PUT Object)过程详解——基于副本策略(一)
swift中创建对象,即PUT object,根据选定的存储策略将对象内容写入至相应的服务器(object server).我们重点关注object controller和object servers ...
- hello2 source analisis(notes)
该hello2应用程序是一个Web模块,它使用Java Servlet技术来显示问候语和响应.使用文本编辑器查看应用程序文件,也可以使用NetBeans IDE. 此应用程序的源代码位于 _tut-i ...
- 23、Java并发性和多线程-重入锁死
以下内容转自http://ifeve.com/reentrance-lockout/: 重入锁死与死锁和嵌套管程锁死非常相似.锁和读写锁两篇文章中都有涉及到重入锁死的问题. 当一个线程重新获取锁,读写 ...
- Intellij IDEA安装插件
从Eclipse到Intellij IDEA换过来,还是没有适应,并且电脑异常的卡顿,4核4G内存的机器表示伤不起.Intellij IDEA还有待我进行调教. 今天说明一下怎样安装插件.以keyPr ...
- 如何使用IVT BlueSoleil 如何在电脑上使用蓝牙耳机
1 确保电脑上有蓝牙适配器 (现在很多电脑是不配蓝牙的),如果没有,网上买个蓝牙适配去,十几块钱很便宜.好了之后装一个下面这个软件,然后搜索蓝牙耳机,下面的状态栏就是"搜索设备" ...
- C 语言宏快速入门
//####### 参照C语言的预处理命令简介 ######## #define 定义一个预处理宏 #undef 取消宏的定义 #include 包含文件命令 #include_next 与#incl ...