起因:接收到一部分数据存在Excel中,大概有300多个,每一个excel的前两行为空,并且插入了一张图片,第三行可以当做表头。
任务:使用kettle将excel中数据导入到数据库中,但是要删除千两行的空白行和第一行的图片。
使用Java 操作文档。
(后续发现使用python操作更简单)

Java 操作Excel 文档
引用 Free Spire.XLS for Java版本: 3.9.1 包
官方文档
或jar包

我的代码

package excel;import com.spire.xls.*;import java.io.File;
import java.util.ArrayList;
import java.util.List;public class RemoveImage {public static void main(String[] args) {List<File> files = getFiles("E:\\XXX\\");for (File f : files) {System.out.println(f.getPath());//加载文档Workbook wb = new Workbook();wb.loadFromFile(f.getPath());//获取指定工作表Worksheet sheet = wb.getWorksheets().get(0);//获取指定图片,删除sheet.getPictures().get(0).remove();//删除前两行数据sheet.deleteRow(1, 2);//保存文档wb.saveToFile("D:\\XXX\\" + f.getName(), ExcelVersion.Version2016);wb.dispose();}}public static List<File> getFiles(String path) {File root = new File(path);List<File> files = new ArrayList<>();if (!root.isDirectory()) {files.add(root);} else {File[] subFiles = root.listFiles();for (File f : subFiles) {files.addAll(getFiles(f.getAbsolutePath()));}}return files;}
}

添加图片

import com.spire.xls.*;public class AddImage {public static void main(String[] args) {//加载文档Workbook wb = new Workbook();wb.loadFromFile("test.xlsx");//获取工作表Worksheet sheet = wb.getWorksheets().get(0);//添加图片ExcelPicture picture = sheet.getPictures().add(7,2,"tp.png");picture.setHeight(270);//设置图片高度picture.setWidth(550);//设置图片宽度picture.setRotation(20);//设置图片旋转角度picture.setAlternativeText("Picture1");//设置图片可选文本picture.setHyperLink("http://www.baidu.com",true);//添加超链接到图片//保存文档wb.saveToFile("AddImage.xlsx", ExcelVersion.Version2010);wb.dispose();}
}

读取图片

import com.spire.xls.*;import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class ExtractImage {public static void main(String[] args) throws IOException {//加载文档Workbook wb = new Workbook();wb.loadFromFile("AddImage.xlsx");//获取第一张工作表Worksheet sheet = wb.getWorksheets().get(0);//获取工作表中第一张图片并保存到指定路径ExcelPicture pic = sheet.getPictures().get(0);BufferedImage loImage = pic.getPicture();ImageIO.write(loImage,"jpg",new File("ExtractedImage.jpg"));}
}

删除图片

import com.spire.xls.*;public class RemoveImage {public static void main(String[] args) {//加载文档Workbook wb = new Workbook();wb.loadFromFile("AddImage.xlsx");//获取指定工作表Worksheet sheet = wb.getWorksheets().get(0);//获取指定图片,删除sheet.getPictures().get(0).remove();//保存文档wb.saveToFile("RemoveImage.xlsx",ExcelVersion.Version2010);wb.dispose();}
}

插入行或列


import com.spire.xls.*;public class InsertRowAndColumn {public static void main(String[] args) {//加载文档Workbook wb = new Workbook();wb.loadFromFile("test.xlsx");//获取工作表Worksheet sheet = wb.getWorksheets().get(0);sheet.insertRow(2);//在第2行插入默认格式的行//sheet.insertRow(2,2);//在第2行插入默认格式的两行//sheet.insertRow(5,1,InsertOptionsType.FormatAsAfter);//在第5行插入和下一行格式相同的两行sheet.insertColumn(3);//在第3列插入默认格式的列//sheet.insertColumn(3,2);//在第3列插入默认格式的两列//sheet.insertColumn(3,1,InsertOptionsType.FormatAsBefore);//在第3列插入和前一列格式相同的一列//保存文档wb.saveToFile("InsertRowAndColumn.xlsx");wb.dispose();}
}

隐藏、显示行或列


import com.spire.xls.*;public class HideAndShowRowOrColumn {public static void main(String[] args) {//加载文档Workbook wb = new Workbook();wb.loadFromFile("test.xlsx");//获取指定工作表Worksheet sheet = wb.getWorksheets().get(0);//隐藏第9行sheet.hideRow(9);//隐藏第3列sheet.hideColumn(3);//sheet.showRow(3);//显示行//sheet.showColumn(3);//显示列//保存文档wb.saveToFile("HideAndShow.xlsx");wb.dispose();}
}

删除行或列


import com.spire.xls.*;public class DeleteRowAndColumn {public static void main(String[] args) {//加载文档Workbook wb = new Workbook();wb.loadFromFile("test.xlsx");//获取工作表Worksheet sheet = wb.getWorksheets().get(0);sheet.deleteRow(1);//删除第1行//sheet.deleteRow(1,2);//删除第1行及下一行在内的两行sheet.deleteColumn(4);//删除第4列//sheet.deleteColumn(4,2);//删除第4列及右侧一列在内的两列//保存文档wb.saveToFile("DeleteRowAndColumn.xlsx");wb.dispose();}
}

Java 操作excel 插入删除列,插入删除图片相关推荐

  1. java excel 插入新行_POI ,Java 操作 Excel 實現行的插入(insert row)

    POI ,Java 操作 Excel 實現行的插入(insert row) 前幾天,正在做一個項目,主要用 POI 來操作 Excel 其中,要使用一個,插入功能.主要是因為從數據庫,返回結果集(數據 ...

  2. java insert row,POI ,Java 操作 Excel 实现行的插入(insert row)

    POI ,Java 操作 Excel 实现行的插入(insert row) 前几天,正在做一个项目,主要用 POI 来操作 Excel 其中,要使用一个,插入功能.主要是因为从数据库,返回结果集(数据 ...

  3. java操作Excel、PDF文件

    java操作Excel.PDF文件 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的java操作excel的工具, 在开源世界中, ...

  4. java操作excel表

    文章分类:Java编程 http://developers.sun.com.cn/blog/functionalca/entry/java读写excel简介 JAVA EXCEL API简介 Java ...

  5. java操作excel的工具

    jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文 ...

  6. java操作Excel有两种方式 方式1:jxl操作Excel jxl的API

    java操作Excel有两种方式 方式1:jxl操作Excel 方式2:poi操作Excel 下面介绍jxl API: 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用 ...

  7. java 操作excel jxl_java 中JXL操作Excel实例详解

    JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一 ...

  8. Java 操作excel表格 - JXL(Java excel api)

    Java 操作excel表格 Java 操作 Excel 最常用的就是JXL(Java excel api)和POI,用起来挺简单的,不过相应的其功能也并非很强大,够用就行! 首先,下载jxl.jar ...

  9. Java操作Excel文件以及在Android中的应用

    本文章由临江仙原创,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/10286563 Excel作为一种有格式的文件,可以使用Java来对 ...

最新文章

  1. JS日期时间加减实现
  2. leetcode算法题--买卖股票的最佳时机含手续费
  3. ftp ssl java_FTP(四)实现FTP,SSL加密
  4. 《矩阵与变换》教学中的几个“务必”
  5. 知识产权(笔记 1-3章)
  6. 【错误记录】Ubuntu 编译 ffmpeg 报错 ( nasm/yasm not found or too old. Use --disable-x86asm for a crippled bu )
  7. 非阻塞套接字及select模型 select(0,fread,NULL,NULL,timeOut);
  8. windows电脑截截屏截图的方法
  9. Oracle第二财季业绩表现抢眼 | 搜狗推出“唇语识别”技术 | FF宣布完成超10亿美元A轮融资
  10. Mac系统下载安装sublime3详细过程
  11. 芯片的SD/MMC控制器以及SD卡介绍
  12. FireFox下载时文件名乱码问题解决
  13. 声源定位c语言源代码,stm32声源定位.doc
  14. uView中picker限制选择时间,让过去的时间不可选
  15. 根据美光内存颗粒上的编码查询对应型号
  16. linux下oracle11G DG搭建(三):围绕备库搭建操作
  17. top命令-linux
  18. chrome快速切换host的扩展程序
  19. 奥巴马演讲雷人文言文版
  20. [学习笔记] python深度学习---第三章 神经网络入门

热门文章

  1. 卸载WPS后怎么WORD的图标还是WPS
  2. BZOJ3811: 玛里苟斯
  3. android activity 实际,Android学习感悟之Activity
  4. 推荐几款比较好的手机流量监控软件
  5. blackjack java gui_求助一个java的题,blackjack, class 分为Card 和Deck,求大神帮我做一个程序...
  6. 12.03-内存管理_Tagged Pointer
  7. 盲盒商城源码系统附源码
  8. 小程序springboot食堂预约订餐系统毕业设计-附源码221554
  9. 如何查看手机绑定过的网站或者APP:注销手机号之前你必须要做的——换绑所有旧手机号绑定过的网站或者APP
  10. 成都春熙路刀客事件PS照片集