Java 操作excel 插入删除列,插入删除图片

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

Java 操作Excel 文档
引用 Free Spire.XLS for Java版本: 3.9.1 包
官方文档
或jar包
Java 操作excel 插入删除列,插入删除图片_第1张图片
我的代码

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,开发语言,后端)