java project实现ArrayList数据到写入保存到本地Excel

     在处理Excel中数据的时候,我们经常会手动的在Excel中写数据,修改数据,但是当数据量过多,所要进行的操作有规律,但是你还是不得不人工的一条条的修改纪录,这样导致花费很多时间和精力,而且准确率也不能得到保证。因此对于熟悉计算机语言的人来说,我们就可以用代码实现Excel的操作,然后将数据写入到本地Excel中,简单方便。下面我就将一个简单的例子贴出来,大家可以学习下,需要的时候按照自己的数据稍作修改就ok。

   首先,将Excel中的数据写入到数据库中,我使用的是mysql数据库,用可视化工具navicat管理,导入Excel数据也方便,不会导入数据的可以百度查看教程。为了方便,我在数据库中创建了一个简单的单表,如下:

  接下来,直接贴代码。

(1)Model类,用来对应数据库中表的结构

package mypackage;

public class Model 
{
  private String name;//数据库中数据对应的字段
  private String pwd;
public String getName() 
{
	return name;
}
public void setName(String name) 
{
	this.name = name;
}
public String getPwd() 
{
	return pwd;
}
public void setPwd(String pwd) 
{
	this.pwd = pwd;
}
@Override
public String toString() 
{
	return "同学 [姓名:" + name + "    密码:" + pwd + "]";
}
@Override
public int hashCode() 
{
	final int prime = 31;
	int result = 1;
	result = prime * result + ((name == null) ? 0 : name.hashCode());
	result = prime * result + ((pwd == null) ? 0 : pwd.hashCode());
	return result;
}
@Override
public boolean equals(Object obj) 
{
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Model other = (Model) obj;
	if (name == null) 
	{
		if (other.name != null)
			return false;
	} 
	else if (!name.equals(other.name))
		return false;
	if (pwd == null) 
	{
		if (other.pwd != null)
			return false;
	} 
	else if (!pwd.equals(other.pwd))
		return false;
	return true;
  }
  
}
ps:里面的方法都是自动生成的,特别说明的是,最后的hashCode()和equals()方法的重写,对于这个我也不是很清楚,网上有相关的说明,我还没有弄懂,需要再接再厉。

(2)Database_Conn类,连接数据库的类,主要从表里面读数据,然后存到ArrayList中

package mypackage;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 * 数据库连接类
 * @author DELL
 *
 */
public class Database_Conn 
{
  private Connection conn=null;
  private PreparedStatement ps=null;
  private ResultSet rs=null;
  
  public ArrayList<Model> open_db()
  {
	  ArrayList<Model> stu=new ArrayList<Model>();
	  try 
	  {
		  //连接数据库代码,先要加载mysql驱动
		   Class.forName("com.mysql.jdbc.Driver").newInstance(); 
		   conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","root","password");
		   String sql="select * from admin";
		   ps = conn.prepareStatement(sql); 
		   //ps.setString(1,username);
		   //ps.setString(2,userpwd);	   
		   rs = ps.executeQuery(); 	
		   System.out.println("-----------------------------------------------------");
		   while(rs.next())
		   {
			   Model mo=new Model();
			   mo.setName(rs.getString(2));
			   mo.setPwd(rs.getString(3));
			   stu.add(mo);
		       System.out.println(mo);
		   }
		   System.out.println("--------------------------------------------------------------");
		   rs.close();
		   ps.close();
		   conn.close();
	  } 
	  catch (Exception e) 
	  {
	   e.printStackTrace();
	   System.out.println("连接失败");
	  }
	  return stu;
  }
}
(3)Test类,测试,里面包含了main函数执行,主要写入到本地Excel的代码在其中。

package mypackage;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Test 
{

	/**测试写入ArrayList中的数据到本地Excel中
	 * @param args
	 */
	public static void main(String[] args) 
	{
         ArrayList<Model> people=new Database_Conn().open_db();
//////////////////////////将ArrayList中的数据写入到本地excel中///////////////////////////        
         //第一步,创建一个workbook对应一个excel文件
         HSSFWorkbook workbook = new HSSFWorkbook();
         //第二步,在workbook中创建一个sheet对应excel中的sheet
         HSSFSheet sheet = workbook.createSheet("用户表一");
         //第三步,在sheet表中添加表头第0行,老版本的poi对sheet的行列有限制
         HSSFRow row = sheet.createRow(0);
         //第四步,创建单元格,设置表头
         HSSFCell cell = row.createCell(0);
         cell.setCellValue("用户名");
         cell = row.createCell(1);
         cell.setCellValue("密码");
         cell=row.createCell(2);
         cell.setCellValue("备注");
         //第五步,写入实体数据,实际应用中这些数据从数据库得到,对象封装数据,集合包对象。对象的属性值对应表的每行的值
         for (int i = 0; i <people.size(); i++) 
         {
             HSSFRow row1 = sheet.createRow(i+1);
             Model mo=people.get(i);
             //创建单元格设值
             row1.createCell(0).setCellValue(mo.getName());
             row1.createCell(1).setCellValue(mo.getPwd());
         }
         //将文件保存到指定的位置
         try 
         {
             FileOutputStream fos = new FileOutputStream("H:\\folders\\用户表.xls");
             workbook.write(fos);
             System.out.println("恭喜您!写入成功!!!!!!");
             fos.close();
         } 
         catch (IOException e) 
         {
        	 System.out.println("写入文件出错啦!");
             e.printStackTrace();
         }
     }
}
以上就是全部代码,执行Test类的main函数之后,在指定目录下就可以看到相应的Excel。

扫描二维码关注公众号,回复: 1907893 查看本文章

PS:以上只是一个简易的流程代码,在具体的情况下,还要对数据库中读取出来的数据作各种处理,然后写到本地Excel中,对于具体的处理每个人按照自己的实际需求进行对ArrayList数据处理即可。




猜你喜欢

转载自blog.csdn.net/qq_20372833/article/details/72875740