POI总结-java读取写入excel文件(读取excel并导入数据库-读取数据库数据并写入excel)

基于struts2的导入excel文件到数据库操作 我们在做一些人员管理系统的时候,市场面临这样一个问题:信息量过大,一个一个的导入相当的费时、费力,直接选中要导入的人员信息的excel表显然是一个好方法。 addStudents.jsp 请选择要导入的excel文件:     StudentAction public String addStudents() throws Exception {     // 获取re 阅读详情

POI包结构
HSSF - 读写Microsoft Excel XLS格式 07office以前的版本
XSSF - 读写Microsoft Excel OOXML XLSX格式 07office以后的版本
HWPF- 读写Microsoft Word DOC格式 针对的word文档
HSLF - 读写Micorsoft PowerPoint格式

创建一个maven项目
先导入POI相关的第三方jar包

<!-- 使用apache poi需要的依赖  -->
 <dependency>
       <groupId>org.apache.poi</groupId>
       <artifactId>poi</artifactId>
       <version>4.0.1</version>
 </dependency>
 <dependency>
       <groupId>org.apache.poi</groupId>
       <artifactId>poi-ooxml</artifactId>
       <version>4.0.1</version>
 </dependency>
 <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-compress</artifactId>
    <version>1.19</version>
</dependency>
<!-- 使用druid连接池建立java程序与mysql数据库的连接需要的依赖  -->
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.26</version>
</dependency>
<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid</artifactId>
     <version>1.0.9</version>
</dependency>

如果不下载org.apache.commons这个依赖,运行的时候会抛出如下异常

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/compress/utils/InputStreamStatistics
	at org.apache.poi.openxml4j.util.ZipArchiveThresholdInputStream.<init>(ZipArchiveThresholdInputStream.java:62)
	at org.apache.poi.openxml4j.util.ZipSecureFile.getInputStream(ZipSecureFile.java:147)
	at org.apache.poi.openxml4j.util.ZipSecureFile.getInputStream(ZipSecureFile.java:34)
	at org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getInputStream(ZipFileZipEntrySource.java:66)
	at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:258)
	at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:721)
	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:237)
	at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:166)
	at org.apache.poi.ooxml.POIXMLDocument.openPackage(POIXMLDocument.java:89)
	at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:340)
	at excelTest.ReadExcelTest.main(ReadExcelTest.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.compress.utils.InputStreamStatistics
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 11 more

Process finished with exit code 1

在resource目录下创建一个druid.properties配置文件,内容如下

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
username=root
password=Root123*
maxActive=20
minIdle=3
initialSize=5
maxWait=60000

读取excel文件前,先准备一个有数据的excel表格
在这里插入图片描述
从excel文件读取数据的流程

1 创建工作簿
2 获取工作表
3 遍历工作表获得行对象
4 遍历行对象获取单元格对象
5 获得单元格的值

package excelTest;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.IOException;

/**
 * 使用poi读取excel文件中的内容
 */
public class ReadExcelTest {
    public static void main(String[] args) {
        XSSFWorkbook workbook = null;
        try {
            //创建工作簿
             workbook = new XSSFWorkbook("D:/test.xlsx");
            //获取工作表
            XSSFSheet sheet = workbook.getSheetAt(0);
            //遍历工作表
            for (Row cells : sheet) {
                //遍历行,获取单元格
                for (Cell cell : cells) {
                    //获取单元格的值,判断是数字还是字符串,然后分别输出
                    if(cell.getCellType() == CellType.NUMERIC){
                        System.out.print(cell.getNumericCellValue() + '\t');
                    }else if(cell.getCellType() == CellType.STRING){
                        System.out.print(cell.getStringCellValue()+ '\t');
                    }
                }
                //每打印一行就换一行
                System.out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                //关闭资源
                if (workbook != null) {
                    workbook.close();

                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

结果输出

姓名	年龄	性别	兴趣爱好	
张三	24.0male	唱歌	
里斯	29.0female	吃饭	
网五	34.0male	跳舞	
赵六	39.0male	喝酒

------------>到这里excel文件内容的读取就完成了

向excel文件写入数据流程

1 创建一个excel文件
2 创建工作表
3 创建行
4 创建单元格赋值
5 通过输出流将对象写入磁盘

package excelTest;

import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 使用poi将数据写入excel文件中
 */
public class WriteExcelTest {
    public static void main(String[] args) {

        XSSFWorkbook xssfWorkbook = null;
        FileOutputStream out = null;
        try {
            //创建工作簿
            xssfWorkbook = new XSSFWorkbook();
            //创建表
            XSSFSheet xssfSheet = xssfWorkbook.createSheet("first_sheet");
            //创建行,这里创建四行
            XSSFRow row1 = xssfSheet.createRow(0);
            XSSFRow row2 = xssfSheet.createRow(1);
            XSSFRow row3 = xssfSheet.createRow(2);
            XSSFRow row4 = xssfSheet.createRow(3);
            //为第一行创建单元格并赋值
            row1.createCell(0).setCellValue("姓名");
            row1.createCell(1).setCellValue("年龄");
            row1.createCell(2).setCellValue("性别");
            //为第二行创建单元格并赋值
            row2.createCell(0).setCellValue("张三");
            row2.createCell(1).setCellValue("18");
            row2.createCell(2).setCellValue("男");
            //为第三行创建单元格并赋值
            row3.createCell(0).setCellValue("李四");
            row3.createCell(1).setCellValue("17");
            row3.createCell(2).setCellValue("男");
            //为第四行创建单元格并赋值
            row4.createCell(0).setCellValue("黄蓉");
            row4.createCell(1).setCellValue("20");
            row4.createCell(2).setCellValue("女");
            //创建一个输出流
            out = new FileOutputStream("D:/output.xlsx");
            //将创建的工作簿内容写入磁盘
            xssfWorkbook.write(out);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                //关闭资源,需做非空判断
                if (out != null) {
                    out.close();
                }
                if (xssfWorkbook != null) {
                    xssfWorkbook.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println("输出成功!");
    }
}

java数据写入excel文件中
在这里插入图片描述
java利用POI将本地的excel表格内的数据读取并导入数据库中,以及将数据库中的表数据读取出来并写入本地excel文件中
下面是代码
包的结构
在这里插入图片描述
下面是具体的代码
程序入口

package cn.excel.exercute;

import cn.excel.domain.Product;
import cn.excel.server.ProductServer;
import cn.excel.server.impl.ProductServerImpl;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ProgramTest {
    public static void main(String[] args)  {
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入操作数:1 读取本地excel文件,并将数据导入到数据库中 2 读取数据库中的表数据并写入本地的excel文件");
        //根据不同的数据做不同的操作
        int num = sc.nextInt();
        ProductServer productServer = new ProductServerImpl();
        if(num == 1){
            //读取excel文件中的内容
            System.out.println("请您输入需要读取的excel文件的路径");
            String path = sc.next();
            //将封装好的对象信息导入到数据库中
            List<Product> read = read(path);
            //将List<Product>解析并写入数据库中
            productServer.parse(read);
        }else if(num == 2){
            //查找数据库中student表的信息,并将数据封装成一个productList集合
            List<Product> productList = productServer.findAll();
            //将productList集合中的数据写入磁盘
            System.out.println("请您输入需要写入的文件路径:");
            //通过控制台输入路径
            String path = sc.next();
            //将封装好的对象进行解析,并写入本地excel文件
            write(productList,path);
            //程序运行完毕后提示运行成功
            System.out.println("写入成功");
        }else {
            System.out.println("请您重新输入");
        }
    }

    /**
     * 读取excel文件后,将一行数据封装成一个Product对象,多行返回一个List对象即可
     * param path 输出的文件路径
     */
    public static List<Product> read(String path){
        XSSFWorkbook xssfWorkbook = null;
        List<Product> productList = new ArrayList<>();
        try {
        	//创建工作簿
            xssfWorkbook = new XSSFWorkbook("D:/student.xlsx");
            //创建工作表
            XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
            //获取最后一行是第几行
            int lastRowNum = sheet.getLastRowNum();
            //由于第一行是字段名称,不做读取,后面建表的时候生成字段,因此这里从第二行开始读取,注意第二行的下标是1
            for (int i = 1; i < lastRowNum; i++) {
            	//获取行
                XSSFRow row = sheet.getRow(i);
                //进行行的非空判断后,在遍历,避免空指针
                if(row != null){
                	//实例化一个List集合,用于存放一行读取出来的所有单元数据
                    List<String> list = new ArrayList<>();
                    //遍历行
                    for (Cell cell : row) {
                    	//获得单元格,对单元格进行非空判断
                        if(cell != null){
                        	//设置单元格数据的类型为字符串,这样即使表中数据有其他类型,也不用考虑类型转换,考虑不周有可能发生的类型转换异常
                            cell.setCellType(CellType.STRING);
                            //获取单元格的数据
                            String value = cell.getStringCellValue();
                            //将每个单元格数据加入List集合中
                            list.add(value);
                        }
                    }
                    //将读取出的每个行的数据封装成一个Product对象
                    Product product = new Product(Integer.parseInt(list.get(0)), list.get(1), Integer.parseInt(list.get(2)), list.get(3), list.get(4));
                    //将每个Product对象添加到productList集合中,相当于一个productList集合装的就是一个sheet表的数据
                    productList.add(product);
                }
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    return productList;
    }

    public static void write(List<Product> productList,String path){
        System.out.println(productList);
        //创建一个工作簿
        Workbook xssfWorkbook = new XSSFWorkbook();
        //创建一个表
        Sheet student = xssfWorkbook.createSheet("student");
        //创建第一行
        Row row1 = student.createRow(0);
        //为第一行的每个单元格赋值
        row1.createCell(0).setCellValue("编号");
        row1.createCell(1).setCellValue("姓名");
        row1.createCell(2).setCellValue("年龄");
        row1.createCell(3).setCellValue("性别");
        row1.createCell(4).setCellValue("爱好");
        FileOutputStream out = null;
        try {
            //创建一个输出流
            out = new FileOutputStream(path);
            //遍历productList集合,并为每行的每一个单元格赋值
            for (int i = 0; i < productList.size(); i++) {
                Row row = student.createRow(i + 1);
                row.createCell(0).setCellValue(productList.get(i).getId());
                row.createCell(1).setCellValue(productList.get(i).getName());
                row.createCell(2).setCellValue(productList.get(i).getAge());
                row.createCell(3).setCellValue(productList.get(i).getSex());
                row.createCell(4).setCellValue(productList.get(i).getHabit());
            }
            xssfWorkbook.write(out);
            out.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            try{
                if(out != null){
                    out.close();
                }
                if(xssfWorkbook != null){
                    xssfWorkbook.close();
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}

Product实体类

package cn.excel.domain;

import java.util.Objects;

/**
 * 通过表格中的属性映射成一个java类
 */
public class Product {
    private int id;
    private String name;
    private int age;
    private String sex;
    private String habit;

    public Product() {}

    public Product(int id, String name, int age, String sex, String habit) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.habit = habit;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getHabit() {
        return habit;
    }

    public void setHabit(String habit) {
        this.habit = habit;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Product product = (Product) o;
        return id == product.id &&
                age == product.age &&
                Objects.equals(name, product.name) &&
                Objects.equals(sex, product.sex) &&
                Objects.equals(habit, product.habit);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, age, sex, habit);
    }

    @Override
    public String toString() {
        return "Product{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", habit='" + habit + '\'' +
                '}';
    }
}

JDBC连接的工具类

package cn.excel.util;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import jdk.internal.util.xml.impl.Input;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * @author XXX
 * 数据库工具类 内部维护一个通过druid实现的连接池
 */
public class DBUtil_druid {
    private static DataSource pool;

    static {
        InputStream is = DBUtil_druid.class.getClassLoader().getResourceAsStream("druid.properties");
        Properties ps = new Properties();
        try {
            ps.load(is);
            pool = DruidDataSourceFactory.createDataSource(ps);
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 返回一个连接池实例
     * @return 返回一个连接池实例
     */
    public static DataSource getDataSource(){
        return pool;
    }

    /**
     * 从连接池中返回一个Connection连接对象
     * @return 返回一个Connection对象
     */
    public static Connection getConnection(){
        try {
            return pool.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 关闭结果集,sql执行载体对象,归还连接给连接池
     * @param res 结果集
     * @param stat sql执行载体
     * @param conn 连接对象
     */
    public static void closeConnection(ResultSet res, Statement stat,Connection conn) throws SQLException {
        try {
            if(res != null){
                res.close();
            }
            if(stat != null){
                stat.close();
            }
            if(conn != null){
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        conn.commit();
        conn.rollback();
        conn.setAutoCommit(true);
        conn.close();
    }
}

ProductServer接口

package cn.excel.server;

import cn.excel.domain.Product;

import java.util.List;

public interface ProductServer {

    /**
     * 对传入的List<Product>中的每个Product调用parse方法
     * @param read
     */
    void parse(List<Product> read);

    /**
     * 查询student表中的所有数据
     * @return
     */
    List<Product> findAll();
}

ProductServer实现类

package cn.excel.server.impl;

import cn.excel.dao.ProductDao;
import cn.excel.dao.impl.ProductDaoImpl;
import cn.excel.domain.Product;
import cn.excel.server.ProductServer;

import java.util.List;

public class ProductServerImpl implements ProductServer {
    private ProductDao productDao = new ProductDaoImpl();

    /**
     * 遍历List<Product>,对里面的每一个produce对象调用parse方法
     * @param read
     */
    @Override
    public void parse(List<Product> read) {
        for (Product product : read) {
            productDao.parse(product);
        }
    }

    /**
     * 查找student表中的所有数据,并返回成一个List对象
     * @return
     */
    @Override
    public List<Product> findAll() {
        return productDao.findAll();
    }
}

ProductDao 接口

package cn.excel.dao;

import cn.excel.domain.Product;
import java.util.List;

public interface ProductDao {

     /**
      * 解析每一个 Product对象
      * @param product
      */
     void parse(Product product) ;

     /**
      * 查询student表中所有字段信息
      * @return
      */
     List<Product> findAll();
}

ProductDao 实现类

package cn.excel.dao.impl;

import cn.excel.dao.ProductDao;
import cn.excel.domain.Product;
import cn.excel.util.DBUtil_druid;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ProductDaoImpl implements ProductDao {
    Connection connection = null;

    public ProductDaoImpl() {}

    @Override
    public void parse(Product product) {
        PreparedStatement ps = null;
        //如果把获取连接对象的代码作为成员变量,可能会导致有一些代码还需要使用这个连接,时连接已经被关闭的情况,运行代码的过程中遇到了这个坑,所以在这里做个记录,把获取连接对象的代码
        connection = DBUtil_druid.getConnection();
        try {
            String sql = "insert into student values(?,?,?,?,?)";
            ps = connection.prepareStatement(sql);
            ps.setInt(1,product.getId());
            ps.setString(2,product.getName());
            ps.setInt(3,product.getAge());
            ps.setString(4,product.getSex());
            ps.setString(5,product.getHabit());
            ps.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            try {
                if (ps != null) {
                    ps.close();
                }
                if (connection != null) {
                    connection.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public List<Product> findAll() {
        String sql = "select id,name,age,sex,habit from student";
        PreparedStatement ps = null;
        ResultSet rs = null;
        Product product = null;
        connection = DBUtil_druid.getConnection();
        List<Product> productList = new ArrayList<>();
        try {
            ps = connection.prepareStatement(sql);
            rs = ps.executeQuery();

            while(rs.next()){
                int id = rs.getInt(1);
                String name = rs.getString(2);
                int age = rs.getInt(3);
                String sex = rs.getString(4);
                String habit = rs.getString(5);
                productList.add(new Product(id,name,age,sex,habit));
            }
        } catch (Exception throwables) {
            throwables.printStackTrace();
        }
        return productList;
    }
}

读取文件前的数据准备,D:/student.xlsx
在这里插入图片描述
当运行操作数为1时,执行结果
在这里插入图片描述
查询数据库的student表显示的数据,说明已经成功将本地excel文件中的数据导入到mysql数据库中
在这里插入图片描述
将数据库student表中数据读取出来,并写入本地excel文件
操作数为2
在这里插入图片描述
查看本地的D:/output.xlsx文件的内容,说明已经成功将数据库表数据写入本地excel文件i中
在这里插入图片描述
加下来改变表格的样式
代码如下

public static void write(List<Product> productList,String path){
        System.out.println(productList);
        //创建一个工作簿
        Workbook xssfWorkbook = new XSSFWorkbook();
        //创建一个表
        Sheet student = xssfWorkbook.createSheet("student");
        //修改的开始标志------------------------------
        //获取工作簿的样式
        CellStyle cellStyle = xssfWorkbook.createCellStyle();
        //设置背景色为红色
        cellStyle.setFillForegroundColor(IndexedColors.RED.getIndex());
        //设置背景色的填充样式为实心
        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        //实例化一个工作簿的字体对象
        Font font = xssfWorkbook.createFont();
        //设置字体为黑体
        font.setFontName("黑体");
        //设置字体颜色为蓝色
        font.setColor(IndexedColors.BLUE.getIndex());
        //将实例化的字体建立与实例化的样式的联系
        cellStyle.setFont(font);

        //创建第一行
        Row row1 = student.createRow(0);
        //创建单元格,并为每个单元格赋值和设置样式
        Cell cell0 = row1.createCell(0);
        Cell cell1 = row1.createCell(1);
        Cell cell2 = row1.createCell(2);
        Cell cell3 = row1.createCell(3);
        Cell cell4 = row1.createCell(4);
        cell0.setCellValue("编号");
        cell0.setCellStyle(cellStyle);
        cell1.setCellValue("姓名");
        cell1.setCellStyle(cellStyle);
        cell2.setCellValue("年龄");
        cell2.setCellStyle(cellStyle);
        cell3.setCellValue("性别");
        cell3.setCellStyle(cellStyle);
        cell4.setCellValue("爱好");
        cell4.setCellStyle(cellStyle);
        //修改的结束标志------------------------------
        FileOutputStream out = null;
        try {
            //创建一个输出流
            out = new FileOutputStream(path);
            //遍历productList集合,并为每行的每一个单元格赋值
            for (int i = 0; i < productList.size(); i++) {
                Row row = student.createRow(i + 1);
                row.createCell(0).setCellValue(productList.get(i).getId());
                row.createCell(1).setCellValue(productList.get(i).getName());
                row.createCell(2).setCellValue(productList.get(i).getAge());
                row.createCell(3).setCellValue(productList.get(i).getSex());
                row.createCell(4).setCellValue(productList.get(i).getHabit());
            }
            xssfWorkbook.write(out);
            out.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            try{
                if(out != null){
                    out.close();
                }
                if(xssfWorkbook != null){
                    xssfWorkbook.close();
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }

运行操作数为2
查看样式效果
在这里插入图片描述
目前先记录这么多,等待下次完善。

java读取excel并存入数据库 java从excel中读取数据并保存到sqlserver数据库中。 其中所需包需要自己下,一个是微软的sqlserver连接驱动包。还有一个是连接excel相关的包,网上都能找到。 立即下载

相关推荐

Java解析Excel文件并把数据存入数据库

本篇文章主要介绍了Java解析Excel文件并把数据存入数据库 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Apache POI的Workbook读取和写入excel文件

maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> ..

进击的小白 5664

EtherCAT APWR报文实战:从站地址配置(0x0010)的初始化流程与报文解析

本文详细解析了EtherCAT APWR报文在从站地址配置(0x0010寄存器)中的初始化流程与实战应用。通过类比物业分配门牌号,生动解释了APWR报文如何高效批量配置从站地址,并深入探讨了0x0010寄存器的特殊作用、初始化步骤及常见问题排查方法。文章结合IgH主站的三从站配置案例,提供了报文解析技巧和调试建议,帮助工程师快速掌握EtherCAT网络配置的核心技术。

weixin_28744423的博客 410

POI读写超大数据量Excel,解决超过几万行而导致内存溢出的问题(附源码)

作者:牧梦者cnblogs.com/swordfall/p/8298386.html1. Excel2003与Excel2007两个版本的最大行数和列数不同,2003版最大行数是65536...

Java知音 2848

三、分区配置

rk3566/rk3568 修改分区

暮云星影的博客 514

W5500 TCP服务器状态机详解:从SOCK_CLOSED到SOCK_ESTABLISHED的完整流程

本文深入解析W5500芯片作为TCP服务器时的状态机转换流程,从SOCK_CLOSED到SOCK_ESTABLISHED的完整链路实践。通过硬件协议栈架构分析、状态机全流程拆解及异常处理方案,帮助开发者构建高可靠性的嵌入式网络服务端,优化TCP连接性能与稳定性。

Jerry的专栏 1165

POI实现大数据EXCLE导入导出,解决内存溢出问题

  使用POI能够导出大数据保证内存不溢出的一个重要原因是SXSSFWorkbook生成的EXCEL为2007版本,修改EXCEL2007文件后缀为ZIP打开可以看到,每一个Sheet都是一个xml文件,单元格格式和单元格坐标均用标签表示。直接使用SXSSFWorkbook来到导出EXCEL本身就是POI为了大数据量导出而量身定制的,所以导出可以直接使用SXSSFWorkbook方式。 ...

weixin_30496431的博客 1729

【linux】解决报错:Network error: Connection refused

【linux】解决报错:Network error: Connection refused

weixin_44502754的博客 4936

POI操作Excel总结

操作原则就是现有工作簿,然后有sheet表,接着是产生行,最后产生单元格,对单元格进行操作。 InputStream in = new FileInputStream(new File("XXX.xlsx")); // 创建工作簿 XSSFWorkbook workBook = new XSSFWorkbook(inputStream); // 创建sheet XSSFSheet sheet...

Steven_sf的博客 2299

Adams Car——Adams car与Simulink联合仿真

Adams与simulink悬架联合仿真

Mr.邹的博客 2125

YOLO11后处理优化 | 引入DIoU-NMS替代传统NMS,解决高重叠目标误删,召回率大幅提升

YOLO11模型在密集目标场景下存在NMS后处理导致的漏检问题。本文提出采用DIoU-NMS替代传统NMS,通过引入中心点距离信息,有效区分重叠但不同的目标,提升召回率。文章详细分析了传统NMS的三大局限性,对比了Soft-NMS和DIoU-NMS的优劣,并给出在YOLO11中实现DIoU-NMS的完整代码方案。该方法特别适用于安防监控、自动驾驶等目标密集场景,能够在不显著增加计算量的情况下显著改善检测效果。

2601_95807009的博客 150

1.Java POI 读取写入Excel(包括样式)的工具类Utils

Java POI 读取写入Excel的工具类

qq_37992410的博客 1万+

【MATLAB代码】蚁群算法(Ant Colony Optimization, ACO)路径规划(避障)仿真程序,订阅专栏后可直接查看完整源代码

基于蚁群算法的路径规划系统。可自定义起点、终点和障碍物地图,系统通过蚁群算法自动计算最优路径,并输出路径坐标、障碍物地图和收敛曲线。完整MATLAB源代码直接运行。适用于复杂障碍环境下的路径优化问题。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 3091

java struts2怎么从数据库获取_文件信息批量导入数据库(Struts2实现文件上传,POI实现Excel文件读取并写入数据库)...

项目中经常会遇到客户的一些单表信息的数据批量导入,也就是提供定制Excel表,再把Excel表中的数据提取到数据库的操作,其实实现起来很简单。以下是小菜鸟我的实现思路:1、JSP页面+Struts2实现文件上传,把定制Excel上传到服务器指定目录下,以供读取;2、POI读取Excel表格,把数据封装为持久化实体List3、批量导入数据库这是TT的开发环境:Struts2.1.6 + Spring...

weixin_29207439的博客 281

工业级实战:C#实现欧姆龙PLC FINS-TCP通信(协议解析+完整源码+避坑指南)

// FINS主命令码+子命令码枚举(工业级常用指令)ReadData = 0x0101, // 读取数据WriteData = 0x0102, // 写入数据ReadPlcStatus = 0x0601, // 读取PLC状态ResetPlc = 0x0605 // 复位PLC(慎用)/// 欧姆龙PLC数据区枚举(工业常用)CIO = 0x30, // CIO区(核心数据区)WR = 0x31, // 工作区HR = 0x32, // 保持区。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 656

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java如何实现导入文件,java实现导入动态excel【】

java实现导入动态excel可把第一行最为标识行,表示该列数据的含义,如“name”表示该列为名字,因此可循环读取第一行每一列的标识,直至为空(要求没有空列)java使用什么技术实现excel数据的批量导入导出java使用第三方工具包POI实现excel数据的批量导入。举例如下:1、下载apache的相jar包。poi-ooxml-3.6.jar xmlbeans-2.3.0.jar等,如图:2...

weixin_33682804的博客 651

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java读取HDFS上的Excel文件

Java的poi

m0_48830183的博客 770

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java代码写excel和文本文档的导入导出

例子1-----》利用jxl包来完成excel导入导出   JXL包提供了JAVA环境下操作EXCEL文件的方法,可对EXCEL文件进行读写操作。总体而言这个包的使用非常简单,因工作需要对它进行了简单的应用,现写一下个人总结。   JXL包似乎对某些版本的EXCEL文件不太兼容,网站上说它支持EXCEL95-2000。不知道是不是这个原因,在读取EXCEL XP文件时(文件中使用了“数

老杨博客 1474

Apache POI操作批量导入MySQL数据库

POI使用到的相关maven依赖坐标如下: POI的相关操作结果 1、POI操作入门案例 1.1、从Excel文件读取数据1 输出结果如下: POI操作Excel表格封装了几个核心对象: 1.2、从Excel文件读取数据2 1.3、向Excel文件写入数据 2、使用POI批量导入数据到MySQL数据库 创建一个数据库的表 创建对应的实体类 2.1、创建导入数据的Excel模板文件 修改页面提供一个下载批量导入数据的模板按钮 文件上传前端代码实现 提交函数 2.2、批量上传文件的后端代码编写

我要记录学习博客 1290

java数据excel,java 输入excel表格数据-java大量数据写入Excel表格数据不见了

用java编写代码按照正确格式读取完整excel表格的数...jxl或者poi,网上到处能下载.jxl,最常用的excel处理api,纯java,跨平台,对图片支持差,只能读写pngpoi,apache的开源项目,功能比jxl强大,但是在处理单元格类型方面有些问题,经常分不清是""还是null.java大量数据写入Excel表格数据不见了//以下为我在项目中运用的jxl的核心代码try{Wor...

weixin_30433439的博客 579

java读取Excel中的sheet名,用java查询excel表格数据!用java代码实现读取Excel中每个sheet页的内容,并且要与其他的Excel中某一列的值进行...

怎么样用java去读取一个excel表格并且把数据写入一个word高点版本OFFICE 我用2013 POI肯定支持吧 谁肯定能行通在Java编程中怎么将从数据库查询出来的数据导成Excel文件?使用Apache POI 解析和生成Excel、Word等MS Office 文体怎么使用可以到官网查: http://poi.apache.org/ ,如果要生成Excel的文档,可用POI的话,有一个...

weixin_32491255的博客 2975

java将数据导入excel表中_如何用JAVA将数据库中的数据导入到excel表格?

如何用JAVA将数据库中的数据导入到excel表格?关注:299答案:2信息版本:手机版 电脑版解决时间 2021-01-31 00:51提问者嗿恋仯囡2021-01-30 19:49数据库使用的是Oracle最佳答案二级知识专家噯ㄖ詘,美2021-01-30 21:14使用jxl或者poi。全部回答1楼我心里的你没人能代替2021-01-30 21:29import java.io.*;...

weixin_28848739的博客 797

java对excel表操作_Java使用poi进行对Excel的操作

Java使用poi进行对Excel的操作废话不多说,直接进入正题先看看目录结构一、将Excel表中的数据通过List集合打印在就控制台二、将数据库中的数据导入的Excel表中上述两条在这里统一进行实现先导入对应的依赖org.apache.poipoi3.17org.apache.poipoi-ooxml3.17mysqlmysql-connector-java5.1.47compilecom.al...

weixin_39716510的博客 165

POI导入导出

Apache POI是一个流行的Java库,用于处理Microsoft Office格式的文件,如Excel(.xls和.xlsx),Word(.doc和.docx),以及PowerPoint(.ppt和.pptx)文档。POI是Apache软件基金会的一个项目,它提供了API来读取、创建、修改和写入这些Office文档,而不需要安装Microsoft Office。

qq_53433105的博客 1085

java进行excel数据导入数据库 (代码)

博主自己写的微信支付,里面有源码有兴趣的可以看一下 https://blog.youkuaiyun.com/weixin_39592397/article/details/85242287 excel导入导出网上参考了一些代码感觉写的都比较复杂,就自己看了一下poi的api自己封装了一段代码(如下) 目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和JavaExcel...

weixin_39592397的博客 7662

使用java技术将Excel表格内容导入mysql数据库

1、添加POI jar包到项目的lib目录下­2、Excel文件目录:d://excel.xls­3、数据库字段为:num1 num2 num3 num4 num5 num6­4、数据库名:blog­

wangchaoqi1985的博客 497
上一篇: nginx安装异常:nginx-1.18.0-1.el6.ngx.x86_64 (nginx)需要:libpcre.so.0()(64bit)
下一篇: kafka集群的安装及启停
programmer_trip
博客等级 码龄7年 3187粉丝 81原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值