精华内容
下载资源
问答
  • 第一行为数据库表的列名,(一定要与数据库的列名相同) 2,使用navicat或sqlyog选中,右键导入 3,选中Excel或cvs(CVS是Excel导出的文件) 4,配置Excel 这里还可以进行配置 然后执行‘ 导入成功 ’ ...

    1,新建Excel文件。第一行为数据库表的列名,(一定要与数据库的列名相同)
    2,使用navicat或sqlyog选中表,右键导入
    在这里插入图片描述
    3,选中Excel或cvs(CVS是Excel导出的文件)
    4,配置Excel
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这里还可以进行配置
    在这里插入图片描述
    然后执行‘
    在这里插入图片描述
    导入成功
    在这里插入图片描述

    展开全文
  • Java将数据库数据导入EXCEL

    千次阅读 2015-12-17 14:28:57
    一般的数据库数据怎么导入excel中呢??这让人很疑惑,今天我找到了一个方法可以实现 需要导入一个第三方包下载地址 具体内容如下: 里面含有指导文档,index.html里面含有如何读取数据库文件到excel和excel数据到...

    一般的数据库数据怎么导入excel中呢??这让人很疑惑,今天我找到了一个方法可以实现

    需要导入一个第三方包下载地址

    具体内容如下:

    里面含有指导文档,index.html里面含有如何读取数据库文件到excel和excel数据到数据库中。


    主要用到一个包


    将这个包拷贝到项目里面就可以了。

    先做一个简单版本的helloword

    <span style="white-space:pre">	</span>public void mkexcel() throws Exception{
    		//首先在内存中建立好工作薄
    		HSSFWorkbook book =new HSSFWorkbook();//建立好工作薄
    		HSSFSheet sheet = book.createSheet("表一");//表单名以及表单
    		HSSFRow row=sheet.createRow(4);//创建行数	
    		HSSFCell cell=row.createCell(4);//创建列数
    		cell.setCellValue("大哥哥,加油!!");//将数据写到cell中去
    		//内存中建立可不行,必须要写到文件
    		FileOutputStream out =new FileOutputStream("a.xls");
    		book.write(out);
    	}
    	
    效果图:


    通过上面的简单实例,我们能发现,创建xls的文件类似于在网页中动态创建table表格类似点击打开链接

    1,建立工作薄

    2,薄建立表

    3,表建行

    4,行建列

    5,列里面设值


    有了上面的这个简单的介绍,现在开始导入数据库里面的内容

    1,我们必须从内存中建立工作薄

    <span style="font-size:18px; white-space: pre;">	</span><span style="font-size:24px;">HSSFWorkbook book =new HSSFWorkbook();</span>
     

    2,创建sheet的时候,我们需要指定sheet名,所有需要用到元数据得到database里面的table名

    Connection con =hibernateFactory2.getCon();//数据库连接成功

    DatabaseMetaData dmeta=con.getMetaData();//元数据

    
    
    <span style="font-size:24px;">ResultSet rs=dmeta.getCatalogs();//获得所有的数据库,但是为了方便,我们直接指定数据库名</span>
    

    3,获得table名,

    <span style="white-space:pre">		</span>String dName="hncu";
    		//获得数据库里面的表名,返回ResultSet 全部放在list中
    		ResultSet rs=	dmeta.getTables(dName, dName, null, new String[]{"TABLE"});
    		//放在list 中,为后面的sheet名
    		List<String > list =new ArrayList<String>();
    		while(rs.next())
    		{
    		<span style="white-space: pre;">	</span>list.add(rs.getString("TABLE_NAME"));//找出表名将其放入list 中
    		}


     4,开始建立sheet表单,同时采用元素据生成表头

    <span style="white-space:pre">	<span style="font-size:24px;">		</span></span><span style="font-size:24px;">for(String sheetname:list){
    			HSSFSheet sheet=book.createSheet(sheetname);//设置表单和表单名
    			String sql="select * from "+dName+"."+sheetname;//以数据库的名字.表名来获取
    			Statement st =con.createStatement();
    			ResultSet rs2=st.executeQuery(sql);
    			ResultSetMetaData rsmd=rs2.getMetaData();
    			int col =rsmd.getColumnCount();//获得有多少列
    			
    			//生成表单的第一行,表头
    			HSSFRow row0 =sheet.createRow(0);
    			for(int i=0;i<col;i++){
    				HSSFCell cell = row0.createCell(i);
    				cell.setCellValue(rsmd.getColumnName(i+1));
    			}</span>

     5,创建行和列以及设置行列的值

    <span style="white-space:pre">			</span>int idx=1;//用来生成行
    			//第一头部分完成
    			
    			//完成第二部分
    			while(rs2.next()){
    				HSSFRow row =sheet.createRow(idx++);//一行创建完成,开始创建列
    				for(int i =0 ;i<col;i++){
    					HSSFCell cell =row.createCell(i);
    					cell.setCellValue(rs2.getString(i+1));
    				}
    			}
    		}


    6,存到文件

    	<span style="white-space:pre">	</span><span style="font-size:24px;">FileOutputStream out =new FileOutputStream("db.xls");
    <span style="white-space:pre">	</span>  book.write(out);//采用book来进行写</span>

    能直接运行的代码

    public void Test3() throws Exception{
    		/*
    		 * 要先得到数据库里面的数据,我们必须采用元数据,获得想关的内容
    		 * 要是直接运行,需要导包 建立数据库,查看的生成后文件在和根目录src同级
    		 */
    		
    		//先从内存中的数据建立
    		HSSFWorkbook book =new HSSFWorkbook();
    		Connection con =hibernateFactory2.getCon();//数据库连接
    		DatabaseMetaData dmeta=con.getMetaData();//元素据
    //		ResultSet rs=dmeta.getCatalogs();//获得所有的数据库
    		String dName="hncu";
    		//获得数据库里面的表名,返回ResultSet 全部放在list中
    		ResultSet rs=	dmeta.getTables(dName, dName, null, new String[]{"TABLE"});
    		//放在list 中,为后面的sheet名
    		List<String > list =new ArrayList<String>();
    		while(rs.next())
    		{
    			list.add(rs.getString("TABLE_NAME"));//找出表名将其放入list 中
    		}
    		for(String sheetname:list){
    			HSSFSheet sheet=book.createSheet(sheetname);//设置表单和表单名
    			String sql="select * from "+dName+"."+sheetname;//以数据库的名字.表名来获取
    			Statement st =con.createStatement();
    			ResultSet rs2=st.executeQuery(sql);
    			ResultSetMetaData rsmd=rs2.getMetaData();
    			int col =rsmd.getColumnCount();//获得有多少列
    			
    			//生成表单的第一行
    			HSSFRow row0 =sheet.createRow(0);
    			for(int i=0;i<col;i++){
    				HSSFCell cell = row0.createCell(i);
    				cell.setCellValue(rsmd.getColumnName(i+1));
    			}
    			int idx=1;
    			//第一头部分完成
    			
    			//完成第二部分
    			while(rs2.next()){
    				HSSFRow row =sheet.createRow(idx++);//一行创建完成,开始创建列
    				for(int i =0 ;i<col;i++){
    					HSSFCell cell =row.createCell(i);
    					cell.setCellValue(rs2.getString(i+1));
    				}
    			}
    		}
    		FileOutputStream out =new FileOutputStream("db.xls");
    		book.write(out);


    就这样就将数据全部导入到excel里面了

    效果图:

    数据库中的数据


    导出的excel的数据


    能够完全导出来,但是在实验的时候,数据库类型为blob类型的不能导出,因为excel 的每个单元格的数据不支持那么大的。

    有什么问题,大家一起提出来,共同讨论下。谢谢


    展开全文
  • 数据库 导入Excel数据

    万次阅读 2019-09-24 18:14:16
    一、准备。 1、Excel内容。 2、数据库。 ...3、excel中没有id的值,但是我们又想主键是32位...3、第一个数据行代表的意思是在Excel中真正有意义的行数,别将标题行包括进去。 4、选择目标。 5、将Excel...

    一、准备。

    1、Excel内容。

    2、数据库。

    3、excel中没有id的值,但是我们又想主键是32位uuid的样子,可以先将id的主键取消掉并允许空值。

    二、开始导入

    1、右击表--导入向导,并选择Excel文件。

    2、选择要导入的表。

    3、第一个数据行代表的意思是在Excel中真正有意义的行数,别将标题行包括进去。

    4、选择目标表。

    5、将Excel表中的列和数据库表的字段一一对应。

    6、选择导入模式.

    7、点击开始就可以了,记得要点下保存,因为前面有个步骤是将Excel表中的列和数据库表的字段一一对应起来,如果再做一遍的话,会非常的无聊。

    三、后续

    1、用sql语句生成主键32位的主键uuid,如果是oracle数据库的话,可以选择在主键id字段设置默认值为GUUID()。

    update reptileShop set id=replace(uuid(),'-','')

    2、将id再次设为主键,别忘了。

     

     

    有不解的地方,可以在下方留言评论。

    展开全文
  • java实现excel表格导入数据库表

    万次阅读 多人点赞 2018-11-07 15:07:14
    导入excel就是一个上传excel文件,然后获取excel文件数据,然后处理数据并插入到数据库的过程 一、上传excel 前端jsp页面,我的是index.jsp 页面我自己加入了一个下载上传文件的功能,其中超链接就是下载 ...

    导入excel就是一个上传excel文件,然后获取excel文件数据,然后处理数据并插入到数据库的过程

    一、上传excel

    前端jsp页面,我的是index.jsp

      在页面中我自己加入了一个下载上传文件的功能,其中超链接就是下载

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <script type="text/javascript" src="jquery/1.7.2/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="jquery/jquery.form.js"></script>
    <script type="text/javascript">
    
    
    
    function test1(){
    	var form = new FormData(document.getElementById("uploadForm"));
        $.ajax({
        	contentType:"multipart/form-data",
            url:"servlet/UploadHandleServlet",
            type:"post",
            async:false,
            data:form,
            dataType:"json",
            processData: false,  // 告诉jQuery不要去处理发送的数据
            contentType: false,   // 告诉jQuery不要去设置Content-Type请求头
            success:function(data){
            	var result=eval(data);
    			var filePath=result[0].filePath;
                //alert(filePath);
                var fileName = result[0].imageName;
                $("#download").attr("href","servlet/DownLoadServlet?filePath="+filePath);
                document.getElementById("download").innerHTML = fileName; 
                
                //上传文件后得到路径,然后处理数据插入数据库表中
                importExcel(filePath); 
            }
        }); 
    }
    
    function importExcel(filePath){
    	$.ajax({
            url:"${pageContext.request.contextPath}/user/insertUserByExcelPath",
            type:"post",
            data:{"filePath":filePath},
            success:function(data){
            }
        });
    }
    
    </script>
    <body>
    
    导入excel表格
    <form id="uploadForm" action="" method="post" enctype="multipart/form-data"> 
    	<table>  
    	     <tr>  
    	          <td>上传文件:</td>  
    	          <td>
    	          <input type="file" name="fileName" id="fileName"/>
    	          </td>  
    	     </tr>
    	</table>
    </form>
    <button id="uploadFile" onclick="test1();">确定</button>
    <!-- servlet/DownLoadServlet -->
    上传的文件<a id="download" href=""></a>
    </body>
    </html>

     后端的上传的servlet,其中需要commons-fileupload-1.2.1.jar的支持,然后我的保存路径savePath是自己写的一个配置文件来的,这里可以写上自己的上传文件所保存的路径就行,返回的是一个json,包括文件路径还有文件名

    package com.huang.servlet;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Iterator;
    import java.util.List;
    import java.util.UUID;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItem;
    import org.apache.commons.fileupload.FileUploadBase;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.ProgressListener;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import org.apache.commons.fileupload.util.Streams;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.stereotype.Controller;
    
    import com.huang.entity.User;
    import com.huang.utils.Excel2Bean;
    import com.huang.utils.PropertiesUtil;
    
    /**
     * Servlet implementation class UploadHandleServlet
     */
    @WebServlet("/UploadHandleServlet")
    public class UploadHandleServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public UploadHandleServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request, response);
    	}
    
    	
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		System.out.println("进入servlet");
    		DiskFileItemFactory fac = new DiskFileItemFactory();
    		ServletFileUpload upload = new ServletFileUpload(fac);
    		upload.setHeaderEncoding("UTF-8");
    		// 获取多个上传文件
    		List fileList = null;
    		try {
    			fileList = upload.parseRequest(request);
    		} catch (FileUploadException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		// 遍历上传文件写入磁盘
    		Iterator it = fileList.iterator();
    		while (it.hasNext()) {
    			Object obit = it.next();
    			if (obit instanceof DiskFileItem) {
    				DiskFileItem item = (DiskFileItem) obit;
    				// 如果item是文件上传表单域
    				// 获得文件名及路径
    				String fileName = item.getName();
    				if (fileName != null) {
    					String fName = item.getName().substring(
    							item.getName().lastIndexOf("\\") + 1);
    					String formatName = fName
    							.substring(fName.lastIndexOf(".") + 1);// 获取文件后缀名
    					String savePath = PropertiesUtil.getInstance().getProperty("uploadFile");
    //					String savePath = this.getServletContext().getRealPath("/WEB-INF/upload");
    					File expsfile = new File(savePath);
    					if (!expsfile.exists()) {// 创建文件夹
    						expsfile.mkdirs();
    					}
    					
    					String realPath = savePath+"/"+ UUID.randomUUID().toString()+"."+formatName;
    					System.out.println("realPath:"+realPath);
    					BufferedInputStream bis = new BufferedInputStream(
    							item.getInputStream());// 获得文件输入流
    					BufferedOutputStream outStream = new BufferedOutputStream(
    							new FileOutputStream(new File(realPath)));// 获得文件输出流
    					Streams.copy(bis, outStream, true);// 开始把文件写到你指定的上传文件夹
    					// 上传成功,则插入数据库
    					File file = new File(realPath);
    					if (file.exists()) {
    //						request.setAttribute("realPath", realPath);
    //						request.getRequestDispatcher("/user/insertUserByExcelPath").forward(request, response);
    						// 返回文件路径
    						String imageName = file.getName();
    						String json = "[{\"filePath\":\""
    								+ realPath
    								+ "\",\"imageName\":\"" + imageName + "\"}]";
    						response.reset();
    						response.setContentType("text/json");
    						response.setCharacterEncoding("UTF-8");
    						response.getWriter().write(json);
    //						response.getWriter().write(realPath);
    						response.getWriter().flush();
    					}
    
    				}
    			}
    		}
    	}
    	
    }
    

    二、处理excel表格并得到含有Javabean的list

    在用ajax调用servlet上传文件后得到路径和文件名,然后进行excel数据处理,在前端的页面上调用importExcel()的js函数,传入刚刚得到的文件路径

    我这里用的是ssm框架中的controller(我自己也学习一下),这里也可以用servlet,或者Struts等。能访问到后端服务就行。

    这里是controller中的代码,主要数据处理在Excel2Bean.getBeanByExcelPath(filePath, User.class)这个方法中

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.annotation.Resource;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.context.request.RequestContextHolder;
    import org.springframework.web.context.request.ServletRequestAttributes;
    import org.springframework.web.servlet.ModelAndView;
    
    import com.huang.entity.User;
    import com.huang.service.UserService;
    import com.huang.utils.Excel2Bean;
    
    @Controller("/userController")
    @RequestMapping("/user")
    public class UserController {
    	
    	@Autowired
    	Excel2Bean excel2Bean;
    	
    	@Resource(name="userService")
    	UserService userService;
    
        @RequestMapping("/insertUserByExcelPath")
    	public void insertUserByExcelPath(HttpServletRequest req,HttpServletResponse Resp){
    		System.out.println("进入insertUserByExcelPath");
    		String filePath = req.getParameter("filePath");
    		System.out.println("filePath:"+filePath);
    		List<User> list =Excel2Bean.getBeanByExcelPath(filePath, User.class);
    		excel2Bean.testinsert(list);
    	}
    }

    这里就说说Excel2Bean.getBeanByExcelPath(filePath, User.class)这个方法

    从excel表格中获取数据然后转换成一个javaBean的list集合,代码中操作excel表格需要用到的jar  poi-ooxml-3.9-20121203.jar,poi-3.9-20121203.jar,poi-ooxml-schemas-3.9-20121203.jar,为什么要用到这些jar,因为在有些之前的版本的poi中可能对word的版本不能兼容,网上具体有说到这个。最好是用org.apache.poi.ss.usermodel.Workbook这个来操作excel,poi各种版本官网下载可以参考微博https://mp.csdn.net/postedit/83620739。对于getBeanByExcelPath这个方法使用到了泛型,也使用到了一点点的反射的东西,获取一个类的属性,并给属性赋值。代码中有方法测试这个获取Javabean的属性并赋值的方法。这个方法也是为了能更通用一点,适用于更多的javabean,更多的表。当然excel的表头就要用到Javabean中的属性名称了。如果对泛型不是很了解的可以学习一下,当然也可以先看里面的readExcel(filePath)这个方法,是一个固定的Javabean对象

    代码如下

    package com.huang.utils;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.lang.reflect.Field;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.*;
    
    import javax.annotation.PostConstruct;
    import javax.annotation.Resource;
    
    import net.sf.jxls.exception.ParsePropertyException;
    import net.sf.jxls.transformer.XLSTransformer;
    
    import org.apache.poi.hssf.model.Workbook;
    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;
    import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    import org.springframework.stereotype.Component;
    
    import com.huang.entity.User;
    import com.huang.service.UserService;
    
    @Component
    public class Excel2Bean {
    	
    	@Resource(name="userService")
    	UserService userService;
    	
    	public static Excel2Bean excel2Bean;
    
    	@PostConstruct
    	public void init() {
    		excel2Bean = this;
    	}
    	public static void testinsert(List<User> list){
    		if(list!=null&&list.size()>0){
    			for (User user : list) {
    				user.setId(excel2Bean.userService.getMaxId()+1);
    				excel2Bean.userService.insertUserByUser(user);
    			}
    		}
    //		System.out.println(excel2Bean.userService.getMaxId());
    		
    	}
    	
    	/**  
         * 获取属性名数组  
    	 * @throws IllegalAccessException 
    	 * @throws InstantiationException 
    	 * @throws SecurityException 
         * */  
        public static  String[]  getFiledName(Class<?> clazz) throws SecurityException, InstantiationException, IllegalAccessException{
        	
            Field[] fields=clazz.newInstance().getClass().getDeclaredFields();  
            String[] fieldNames=new String[fields.length];  
            for(int i=0;i<fields.length;i++){  
    //            System.out.println(fields[i].getType());  
                fieldNames[i]=fields[i].getName();  
            }  
            return fieldNames;  
        } 
    
    
    	public static <T>T getByExcelPath(String excelPath,Class<T> clazz){
    		T bean = null;
    		try {
    			bean = clazz.newInstance();
    			String tableName = clazz.getSimpleName();
    			// 反射bean上与列名相同的属性
    			try {
    				Field f = bean.getClass().getDeclaredField("name");
    				f.setAccessible(true);
    				f.set(bean, "兽王");
    //				System.out.println(f);
    			} catch (NoSuchFieldException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (SecurityException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		} catch (InstantiationException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IllegalAccessException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return bean;
    	}
    	
    	public static <T> List<T> getBeanByExcelPath(String excelPath,Class<T> clazz){
    		List<T> list = new ArrayList<T>();
    		org.apache.poi.ss.usermodel.Workbook workbook = null;
    		InputStream is = null;
    		try {
    			is = new FileInputStream(excelPath);
    			workbook = WorkbookFactory.create(is);
    			is.close();
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (InvalidFormatException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} 
    		// 循环工作表
    		for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {
    			Sheet sheet = workbook.getSheetAt(numSheet);//得到工作表
    			if (sheet == null) {
    				continue;
    			}
    			// 循环行  因为表头行是第0行,所以从0开始循环
    			Row rowHead = sheet.getRow(0);
    			for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
    				T bean = null;
    				try {
    					bean = clazz.newInstance();
    				} catch (InstantiationException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				} catch (IllegalAccessException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}
    				Row row = sheet.getRow(rowNum);//得到行
    				short s = row.getLastCellNum();//得到此行有多少列
    				for (int i = 0; i < s; i++) {
    					Cell cell = row.getCell(i);//得到单元格(每行)
    					Cell cellHead = rowHead.getCell(i);
    					String feild = (String) getCellValObject(cellHead);//得到表头属性名称
    					Object value = getCellValObject(cell);
    					Field f = null;
    					try {
    						
    						f = bean.getClass().getDeclaredField(feild);//根据名称获取bean中的属性
    						f.setAccessible(true);
    						f.set(bean, value);//给属性赋值
    					} catch (NoSuchFieldException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					} catch (SecurityException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					} catch (IllegalArgumentException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					} catch (IllegalAccessException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					} 
    				}
    				
    				//把所有属性值添加完成后装入list中
    				list.add(bean);
    				
    			}
    		}
    		
    		
    		return list;
    	}
    	
    	public static String getCellVal(HSSFCell cel) {
    		if(cel.getCellType() == HSSFCell.CELL_TYPE_STRING) {
    			return cel.getRichStringCellValue().getString();
    		}
    		if(cel.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
    			return cel.getNumericCellValue() + "";
    		}
    		if(cel.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
    			return cel.getBooleanCellValue() + "";
    		}
    		return cel.toString();
    	}
    	
    	public static String getCellVal(Cell cel) {
    		if(cel.getCellType() == Cell.CELL_TYPE_STRING) {
    			return cel.getRichStringCellValue().getString();
    		}
    		if(cel.getCellType() == Cell.CELL_TYPE_NUMERIC) {
    			return cel.getNumericCellValue() + "";
    		}
    		if(cel.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
    			return cel.getBooleanCellValue() + "";
    		}
    		if(cel.getCellType() == Cell.CELL_TYPE_FORMULA) {
    			return cel.getCellFormula() + "";
    		}
    		return cel.toString();
    	}
    	
    	public static Object getCellValObject(Cell cel) {
    		if(cel.getCellType() == Cell.CELL_TYPE_STRING) {
    			return cel.getRichStringCellValue().getString();
    		}
    		if(cel.getCellType() == Cell.CELL_TYPE_NUMERIC) {
    			return new Integer(Double.valueOf(cel.getNumericCellValue()).intValue());
    		}
    		if(cel.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
    			return cel.getBooleanCellValue() + "";
    		}
    		if(cel.getCellType() == Cell.CELL_TYPE_FORMULA) {
    			return cel.getCellFormula() + "";
    		}
    		return null;
    	}
    	
    	public static List<User> readExcel(String filePath){
    		List<User> list = new ArrayList<User>();
    //	    HSSFWorkbook workbook = null;
    		org.apache.poi.ss.usermodel.Workbook workbook = null;
    	    try {
    	      // 读取Excel文件
    	      InputStream inputStream = new FileInputStream(filePath);
    //	      workbook = new HSSFWorkbook(inputStream);
    	      workbook = WorkbookFactory.create(inputStream);
    	      inputStream.close();
    	    } catch (Exception e) {
    	      e.printStackTrace();
    	    }
    	    // 循环工作表
    	    for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {
    	      Sheet hssfSheet = workbook.getSheetAt(numSheet);
    	      if (hssfSheet == null) {
    	        continue;
    	      }
    	      // 循环行
    	      for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
    	        Row hssfRow = hssfSheet.getRow(rowNum);
    //	        System.out.println("hssfRow1:"+hssfRow.getRowNum());
    //	        System.out.println("hssfRow2:"+hssfRow.getLastCellNum());
    	        if (hssfRow == null) {
    	          continue;
    	        }
    	        // 将单元格中的内容存入集合
    	        User user = new User();
    	        Cell cell = hssfRow.getCell(0);
    	        if (cell == null) {
    	          continue;
    	        }
    	        String name = getCellVal(cell);
    	        System.out.println("name:"+name);
    	        user.setName(name);
    	        cell = hssfRow.getCell(1);
    	        if (cell == null) {
    	          continue;
    	        }
    	        String age = getCellVal(cell);
    	        Integer aa = Double.valueOf(age).intValue();
    	        
    	        System.out.println("age:"+age);
    	        user.setAge(Double.valueOf(age).intValue());
    	        list.add(user);
    	      }
    	    }
    	    return list;
    	}
    }
    

    三、插入数据库

    得到excel转换成Javabean的list对象后然后插入到数据库中。我这里用的是ssm里面的一些操作,我自己可能都解释不清楚。反正得到数据,然后往数据库插入数据这个操作也可以用其他方式的,框架也好,jdbc连接数据库直接去执行sql也好,都OK。

    最后贴一下下载上传的文件的servlet代码

    package com.huang.servlet;
    
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class DownLoadServlet
     */
    @WebServlet("/DownLoadServlet")
    public class DownLoadServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public DownLoadServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request,response);
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// 下载文件
    //		String path = "d:"+File.separator + "mytestfile" + File.separator + "testFile.txt";
    		String path = request.getParameter("filePath");
    		String realPath = path.substring(path.lastIndexOf("\\")+1);  
    		response.setHeader("content-disposition","attachment; filename="+URLEncoder.encode(realPath, "utf-8"));  
            //获取到所下载的资源  
    		FileInputStream fis = new FileInputStream(path);
    		if(fis!=null){
    			int len = 0;
    			byte[] buf = new byte[1024];
    			while ((len = fis.read(buf)) != -1) {
    				response.getOutputStream().write(buf, 0, len);
    			}
    			fis.close();
    		}else{
    			response.getWriter().write("服务器上面不存在该文件");
    		}
    		
    	}
    
    }
    

    还有User.java这个javabean

    public class User {
    	private Integer id;
    	 
        private String name;
     
        private Integer age;
     
        public Integer getId() {
            return id;
        }
     
        public void setId(Integer id) {
            this.id = id;
        }
     
        public String getName() {
            return name;
        }
     
        public void setName(String name) {
            this.name = name == null ? null : name.trim();
        }

    页面效果如下,超链接可以下载,点击确定后上传文件并取数据然后插入数据库表中 

    excel表格形式如下 

     

     

    name age
    大鱼 18
    小鱼 15

     

    文章不知道有什么遗漏的地方,有的话,还请多多指教。

    展开全文
  • 请问:如何实现phpExcel表中向mysql数据库导入数据,要注意那些东西?
  • python将excel自适应导入数据库

    万次阅读 2021-01-28 22:09:34
    excel中每个sheet自动导入数据库,以sheet名称为表名在数据库中创建; 将每个sheet中的数据添加至数据库对应中;默认以第一行为该的列表名,其它行作为数据; 查找数据中存在的文件名; 查找数据库中某的说...
  • 具体操作:在Excel中,把第一列设置为空列,第二列以后的列应与要导入的数据的字段相对应。 2.登录PLSQL Developer,找到需要导入数据的数据库表后,点击右键--edit data,进入了编辑此的数据对话框,并点击最...
  • Python实现数据库数据导入Excel

    千次阅读 2017-03-06 18:53:47
    之前已经使用SchemaSpy工具分析了数据库的结构,之后就可以比较方便的将数据从数据库导出到Excel等文件,这次我选择使用Python来完成这个工作。
  • 想mssql数据库表中导入excel数据

    千次阅读 2011-08-22 23:26:05
    右键数据库-->任务-->导入数据-->下一步-->数据源选择(Microsoft Excel) -->Excel文件路径选择文件的物理路径-->版本MicrosoftExcel 97-2005 -->下一步-->服务器名称(选择你要想导入数据库的计算机名)-->身份...
  • 如何navicat中导入excel表中的数据

    千次阅读 2019-07-12 18:04:16
    Navicat是数据库工具,把 excel数据导入navicat数据库是进行管理的第一步,那么如何将 Excel 数据导入到 Navicat 数据库呢? 将 Excel 数据导入到 Navicat 数据库的步骤如下: 步骤一 运行“导入向导”,选择导入...
  • EXCEL表中有个字段是中文,而需要导入表中的这个字段是编号,要在数据库的另一张表中取得这个中文字段所对应的编号来导入需要导入表中,该怎么做? ![图片说明]...
  • 新建个excel,把原来那个的内容复制到新建的里面,再去导入,选择新建的这个excel 就ok了
  • sqlplus 中导入Excel数据库的对应

    千次阅读 2012-01-11 11:07:34
    1.在数据库中要有,Excel导入文件的第一行的名称要跟表中的字段名一样   2.   3.   4.选择要导入的excel   5.   6.     7.导入Excel   8.导入成功
  • Excel表导入Mysql数据库

    千次阅读 2017-12-22 17:22:24
    1:建数据库2:右键数据库→导入→导入外部数据库3:直接下...指定数据类型和长度7:Advanced设置的创建方式8:下一步直到结束9:结果备注:初次导入Excel表需要安装一个小工具,导入的过程按提示下载安装即...
  • Node实现数据库数据导入Excel

    千次阅读 2017-03-08 14:44:29
    要把数据从数据库导入Excel,需要和数据库搭配的库,和Excel搭配的库,再来一个查数据库的库就够了。所以我使用了如下modules: pg,用于和PostgreSql搭配 node-xlsx,用于和Excel搭配 knex,当做query ...
  • MySQL数据库导入Excel数据

    千次阅读 2018-11-24 12:27:20
    我用的是MySQ-front,登陆的是本地数据库(localhost) 新建数据库——新建表格——新建字段 首先要了解所要创建的表格的...定义好之后,就开始导入Excel数据最好格式为xls方便快捷,如果用的比较新的版本的of...
  • java excel导入数据库/java excel导入

    热门讨论 2010-03-25 09:34:11
    struts+hibernate实现excel导入数据库 注意:Excel导入是指读服务器端的数据,也就是说,如果想用客户端的Excel是需要把Excel文件先上传到服务器上的,然后再导入,我也是前几天才发现的。
  • 查询分析器里,直接写SQL语句: 如果是导入数据到现有,则采用 INSERT INTO SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) 的形式 如果是导入...
  • 1.将EXCEL中不需要的列删除 2.将EXCEL留下列的标题栏命名为数据库表的字段名 3.替换掉文件中的#REF!和#N/A等错误字符。 4.用达梦数据迁移工具将EXCEL文件导入数据库中,创建新这里插入图片描述 ...
  • 我新翻译的作品,发表天极网ASP.NET中数据库数据导入Excel并打印http://dev.yesky.com/SoftChannel/72342380468043776/20041220/1890549.shtml
  • 用php写了利用PHPExcel将数据库数据导入excel表格的方法该方法需要引入PHPExcel类,可以http://phpexcel.codeplex.com/下载,我的放在Excel文件夹下php代码如下:// 定义根目录 define('ROOT_PATH', __DIR__); // ...
  • 1.上篇博文主要介绍了使用JXL,POI技术将数据库表数据导出为Excel; 2.本篇主要介绍导入功能的实现; 3.还是以POI技术为主,JXL这里只做代码展示,若有兴趣可以私下研究 4.使用JXL从Excel表格读取数据代码示例: ...
  • EXCEL数据导入数据库表

    千次阅读 2016-02-12 13:06:00
    EXCEL文件数据导入数据库表的方法
  • 算是曲线解决数据库导入excel数据 直接导入excel会出现文件打不开的情况,所以我使用.csv这个方式来导入,因为我一直解决不了打不开excel的问题,网上找也解决不了,用phpMyAdmin的.csv导入的话也出了点问题,所以...
  • 在excel表菜单中选则数据–>导入数据,如图: 选则高级–>选择数据源,如图: 出现数据链接属性,选择for SqlServer,如图: 点击下一步,进入连接,输入服务器地址–>填写账号–>选择数据库–>进行...
  • 使用PLSQL Developer的ODBC导入器将Excel表导入Oracle数据库
  • Java实现Excel导入数据库,如果存在就更新数据库中的数据导入Excel   1、添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的lib目录下­ 2、Excel文件目录:D://book.xls 3、数据库名:javenforexcel 4、...
  • 用C#代码写一个数据库导入系统,只是将excel表导入到SQL2008数据库, 我用的是offices 2010 前台是一个fileupload控件,一个button控件,选择excel文件,点击button按钮,直接把excel表中的内容导入到SQL数据库...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,820
精华内容 22,728
关键字:

在数据库中导入excel表