精华内容
下载资源
问答
  • Android数据转化为Excel表格导入导出

    万次阅读 2016-03-08 14:20:50
    Android数据转化为Excel表格导入导出

            最近需要用到把Android数据到处保存到Excel表格中,个人感觉也比较实用,所以就和大家分享一下。以前没接触过该怎么办呢?有问题找百度,只有你想不到的没有你找不到的。在网上也找到了一些例子,自己又加以完善。代码也比较容易,只需要用到一个jxl.jar包,举一反三android数据应该也能转为Word什么的,呵呵。

            Demo实现了一个简单的记账功能,点击导出账单就导出到了Excel表。点击导入账单就把Excel数据显示到Android手机上了导出账单先把数据保存到Sqlite中然后再倒入Excel,这样做的好处是就算你把Excel表格误删了,还是能从Sqlite中读出以前的保存记录。效果图如下:




    主要代码ExcelUtils类,封装了把数据转化为Excel的工具类:

    public class ExcelUtils {
    	public static WritableFont arial14font = null;
    
    	public static WritableCellFormat arial14format = null;
    	public static WritableFont arial10font = null;
    	public static WritableCellFormat arial10format = null;
    	public static WritableFont arial12font = null;
    	public static WritableCellFormat arial12format = null;
    
    	public final static String UTF8_ENCODING = "UTF-8";
    	public final static String GBK_ENCODING = "GBK";
    
    	public static void format() {
    		try {
    			arial14font = new WritableFont(WritableFont.ARIAL, 14,
    					WritableFont.BOLD);
    			arial14font.setColour(jxl.format.Colour.LIGHT_BLUE);
    			arial14format = new WritableCellFormat(arial14font);
    			arial14format.setAlignment(jxl.format.Alignment.CENTRE);
    			arial14format.setBorder(jxl.format.Border.ALL,
    					jxl.format.BorderLineStyle.THIN);
    			arial14format.setBackground(jxl.format.Colour.VERY_LIGHT_YELLOW);
    			arial10font = new WritableFont(WritableFont.ARIAL, 10,
    					WritableFont.BOLD);
    			arial10format = new WritableCellFormat(arial10font);
    			arial10format.setAlignment(jxl.format.Alignment.CENTRE);
    			arial10format.setBorder(jxl.format.Border.ALL,
    					jxl.format.BorderLineStyle.THIN);
    			arial10format.setBackground(jxl.format.Colour.LIGHT_BLUE);
    			arial12font = new WritableFont(WritableFont.ARIAL, 12);
    			arial12format = new WritableCellFormat(arial12font);
    			arial12format.setBorder(jxl.format.Border.ALL,
    					jxl.format.BorderLineStyle.THIN);
    		} catch (WriteException e) {
    
    			e.printStackTrace();
    		}
    	}
    
    	public static void initExcel(String fileName, String[] colName) {
    		format();
    		WritableWorkbook workbook = null;
    		try {
    			File file = new File(fileName);
    			if (!file.exists()) {
    				file.createNewFile();
    			}
    			workbook = Workbook.createWorkbook(file);
    			WritableSheet sheet = workbook.createSheet("家庭帐务表", 0);
    			sheet.addCell((WritableCell) new Label(0, 0, fileName,
    					arial14format));
    			for (int col = 0; col < colName.length; col++) {
    				sheet.addCell(new Label(col, 0, colName[col], arial10format));
    			}
    			workbook.write();
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			if (workbook != null) {
    				try {
    					workbook.close();
    				} catch (Exception e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		}
    
    	}
    
    	@SuppressWarnings("unchecked")
    	public static <T> void writeObjListToExcel(List<T> objList,
    			String fileName, Context c) {
    		if (objList != null && objList.size() > 0) {
    			WritableWorkbook writebook = null;
    			InputStream in = null;
    			try {
    				WorkbookSettings setEncode = new WorkbookSettings();
    				setEncode.setEncoding(UTF8_ENCODING);
    				in = new FileInputStream(new File(fileName));
    				Workbook workbook = Workbook.getWorkbook(in);
    				writebook = Workbook.createWorkbook(new File(fileName),
    						workbook);
    				WritableSheet sheet = writebook.getSheet(0);
    				for (int j = 0; j < objList.size(); j++) {
    					ArrayList<String> list = (ArrayList<String>) objList.get(j);
    					for (int i = 0; i < list.size(); i++) {
    						sheet.addCell(new Label(i, j + 1, list.get(i),
    								arial12format));
    					}
    				}
    				writebook.write();
    				Toast.makeText(c, "导出到手机存储中文件夹Family成功", Toast.LENGTH_SHORT).show();
    			} catch (Exception e) {
    				e.printStackTrace();
    			} finally {
    				if (writebook != null) {
    					try {
    						writebook.close();
    					} catch (Exception e) {
    						e.printStackTrace();
    					}
    
    				}
    				if (in != null) {
    					try {
    						in.close();
    					} catch (IOException e) {
    						e.printStackTrace();
    					}
    				}
    			}
    
    		}
    	}
    
    	public static  List<BillObject> read2DB(File f, Context con) {
    		ArrayList<BillObject> billList = new ArrayList<BillObject>();
    		try {
    			Workbook course = null;
    			course = Workbook.getWorkbook(f);
    			Sheet sheet = course.getSheet(0);
    			
    			Cell cell = null;
    			for (int i = 1; i < sheet.getRows(); i++) {
    				BillObject tc = new BillObject();
    				cell = sheet.getCell(1, i);
    				tc.setFood(cell.getContents());
    				cell = sheet.getCell(2, i);
    				tc.setClothes(cell.getContents());
    				cell = sheet.getCell(3, i);
    				tc.setHouse(cell.getContents());
    				cell = sheet.getCell(4, i);
    				tc.setVehicle(cell.getContents());
    				Log.d("gaolei", "Row"+i+"---------"+tc.getFood() + tc.getClothes()
    						+ tc.getHouse() + tc.getVehicle());
    				billList.add(tc);
    				
    			}
    			
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return billList;
    	}
    
    	public static Object getValueByRef(Class cls, String fieldName) {
    		Object value = null;
    		fieldName = fieldName.replaceFirst(fieldName.substring(0, 1), fieldName
    				.substring(0, 1).toUpperCase());
    		String getMethodName = "get" + fieldName;
    		try {
    			Method method = cls.getMethod(getMethodName);
    			value = method.invoke(cls);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return value;
    	}
    }


                 项目源码地址,点击下载......

    展开全文
  • 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

     

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

    展开全文
  • 导入一个excel表格。需要先从数据库取另一个表的数据并将其中一个字段的数据存入hashcode和要导入的excel表格其中一列数据进行对比。相同的数据才导入另一个表。
  • WPS表格列里批量导入图片

    千次阅读 2020-05-26 15:08:47
    参考:WPS表格技巧—如何批量插入图片 调整表格列宽和行高 插入本地图片(全选) ...选中最后一张,放到最后行的位置 选中一张图片,Ctrl+A,点击快捷栏中的左对齐按钮 再点击快捷栏中的纵向分布按钮 以上。 ...

    参考:WPS表格技巧—如何批量插入图片

    • 调整表格列宽和行高
    • 插入本地图片(全选)
    • 调整图片宽高
    • 选中最后一张,放到最后一行的位置
    • 选中一张图片,Ctrl+A,点击快捷栏中的左对齐按钮
    • 再点击快捷栏中的纵向分布按钮

    以上。

    展开全文
  • 将excel表格导入oracle

    千次阅读 2016-10-20 17:16:31
    今天经理让把excel数据导入oracle,网上找了找,pl/sql有自带的工具 Tool下的Odbc improter可以导入excel表格,不过我试了下,最后不能导入,不知道什么地方没配置好,有时间再研究研究,做标记。 但是,我又找到...

    今天经理让把excel数据导入oracle,网上找了找,pl/sql有自带的工具 Tool下的Odbc improter可以导入excel表格,不过我试了下,最后不能导入,不知道什么地方没配置好,有时间再研究研究,做个标记。

    但是,我又找到一种方法。找到需要添加的表,执行更新语句更新表


    将左上角的小锁标记变为开锁,然后点击加号,添加一行,将excel表格的数据直接复制过来(注意要保证数据库表和excel的字段和列顺序相同),

    然后点击最前面序号选中全部列,ctrl+V


    然后提交就ok了

    展开全文
  • 关于怎么把Excel表格导入MySQL数据库中

    万次阅读 多人点赞 2019-06-06 18:27:35
    关于怎么把Excel表格导入MySQL数据库中第一步:建造Excel表格并且编辑数据1、我们要建立一个Excel表格文件2、编辑我们需要的数据3、保存到你知道的位置第二步:在MySQL中建立一张表1、   在我一开始学习编程时...
  • R语言导入表格数据

    千次阅读 2019-11-08 15:27:58
    读取一个Excel文件的好方式,就是在Excel中将其导出为一个逗号分隔文件(csv),并使 用前文描述的方式将其导入R中。在Windows系统中,你也可以使用RODBC包来访问Excel文件。 电子表格的第一行应当包含变量/列的名称...
  • 【PHP】Excel表格导入导出

    千次阅读 2017-01-17 01:23:34
    在我们的管理系统开发中经常需要使用到表格导入导出的功能,今天我们就使用phpexcel这个类库来实现我们需要的表格导入导出功能 什么是PHPExcel? 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML...
  • 导入Excel表格数据()

    千次阅读 2019-06-07 15:42:04
    在学习MVC过程中,如果我们需要录入某条数据时可以利用新增的方法把我们的数据录入进去,而录入的数据比较多的时候,一条一条的录入会比较麻烦,所以我们可以在VS中写一个方法就可以一次性录入多条数据了。即导入...
  • Angular表格导入导出

    千次阅读 热门讨论 2017-10-30 09:10:30
    最近小编在公司做项目中用到了表格,大家都知道每一个表格都有导入导出功能,导入导出功能是表格的重点,所以在表格导入导出上就需要花点心思了,下面咱们一起来看一下吧。
  • 这篇博客讲讲如何使用【从表格】按钮导入数据 ,这按钮在【获取和转换】组的C位,很明显Office的产品经理认为与其他数据源相比,用户会更多的使用这功能。 其实这按钮的名字有些容易混淆,Excel通俗的名字是...
  • 在javaweb中将excel表格导入存放数据库

    万次阅读 热门讨论 2017-10-16 17:25:40
    //处理excel表格中的数据,其实很简单对应好就可以了。 for(int rowNum=1;rowNum();rowNum++){ Row row=sheet.getRow(rowNum); if(row!=null){ departVO=new DepartmentVO(); Cell ...
  • 1. 首先我需要抓取数据的网址是: ...2. 打开浏览器,输入网址,是这页面 3. 我想要抓取,品牌,机型,系统,分辨率,联网右边的表格 4. 使用 pycharm IDE,下载 selenium模块  pip install selenium(请在py...
  • java实现表格数据导入数据库

    千次阅读 2019-01-04 11:33:19
    java实现表格数据导入数据库 1、pom.xml配置,需要先引用poi的jar包 &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.apache.poi&amp;amp;lt;/groupId&amp;...
  • 1.首先新建数据库表格 use testA; create table userC(  id int primary key,  name varchar(50),  age int ) go insert into userC values(10001,'张三',20); insert into userC values(10002,'李四',25); ...
  • 表格文件导入mysql数据库

    千次阅读 2018-07-19 11:47:43
    表格文件导入mysql数据库 1.Excel文件导入mysql数据库 项目需求: 将Excel文件中的数据按对应关系导入mysql数据库 选择目标表==&gt;导入向导 选择导入的文件类型 选择数据源(某个文件某个sheet) ...
  • excel表格数据导入mssql

    2018-08-31 10:20:56
    首先,右击数据库,任务,导入数据。再点下一步 这里要注意一下,数据源选择excel,然后表格的版本一定要对应。...一开始导入数据库的时候一直报错,为这把这一个表格倒进数据库用了三个小时!...
  • MySQL Workbench 如何导入表格数据

    千次阅读 2018-06-27 17:52:18
    之前有一个需求,从其他数据库拿下来的数据(excel表格),需要导入测试数据库(mysql)中,我使用的工具是workbench. 首先,我们需要打开excel数据表: 我们可以看到里面有中文,第一行是与数据库对应的字段名(不...
  • js导入,导出exel表格

    千次阅读 2018-06-11 11:18:02
    导入excle表格 导出excel表格 导出excel表格如果需要在后端处理,前端调用接口的话,只需要如下配置即可。 &amp;lt;a href={'接口地址'} download&amp;gt;导出列表&amp;lt;/a&amp;gt;&...
  • 1.在数据库中建立相应的数据表,表字段数目与Excel表格的列数相同,且字段顺序须与Excel表格保持一致,若数目不同,在导入时会报错: 此外,建表时,表名不能含有大写字母,否则pgsql识别不出来: 2.将Excel...
  • 复杂 Excel 表格导入导出的最简方法

    千次阅读 2019-02-11 15:56:11
    把 Excel 文件导入关系数据库是数据分析业务中经常要做的事情,但许多 Excel 文件的格式并不规整,需要事先将其中的数据结构化后再用 SQL 语句写入数据库。JAVA程序猿经常选择使用POI或者HSSFWorkbook等第三方类库来...
  • vue实现表格导入,导出操作

    万次阅读 2020-03-21 13:39:05
    表格导入导出 首先安装: npm install vue-json-excel//表格导出 npm install vue-xlsx-table//表格导入 在vue的main.js文件中加入全局配置 //导入表格 import vueXlsxTable from 'vue-xlsx-table' Vue.use...
  • excel表格导入到matlab中,以及时间转换
  • Qt Tablewidget表格数据的导出和导入

    千次阅读 多人点赞 2021-02-07 14:46:01
    文章目录. xls/xlsx文件数据导入TableWidget表格二. tableWidget表格数据导出为xls...我所使用的这种方法,导入/导出相对较慢,网上有另一种比较快,有机会再写出来。 前期准备: pro文件加入 QT += axcontainer 在头
  • 工作中有时候会碰到到excel表格中的数据要存入mysql数据库中的情况,少量数据可以通过手动录入,或者编写sql语句,insert into table来完成,但是一旦数据...建议一次只传一个文件,否则可能会等待很久,一旦有报错...
  • layui数据表格的数据导入

    千次阅读 2019-04-27 11:14:34
    毕业设计的后台的PC端管理界面是用layui框架搭的,在其中的内联框架中包含了一些数据表格,开始完全不懂该怎么导入数据,后来问了老师,老师跟我讲了才知道。我的毕业设计是用php做的后台,下面就是导入的方式: ...
  • 上次给大家提供了一个从Excel电子表格导入到SQL Server数据库的方法,前提条件是机器上要装有Office 里的Excel组件。今天再为大家提供一种方法:不需要安装Excel也可以导入到我们的SQL Server数据库。首先用SQL ...
  • 如何把 Excel 的表格导入 Indesign

    千次阅读 2018-07-23 23:48:57
    以 mac Indesign 2018 为例。 (1) 打开 Indesign 菜单 :Indesign CC -&...(2) 打开 Excel 需要安装 Number,如果没有安装 Number ,首先免费下载一个:https://www.apple.com/cn/numbers/。 ...
  • 表格的数据导入到数据库临时表时,出现了以下错误信息: - 正在执行 (错误) 消息 错误 0xc020901c: 数据流任务 1: 输出“Excel 源输出”(9) 上的 输出列“产品种类”(30) 出错。返回的列状态是:“文本被截断,...
  • 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 180,992
精华内容 72,396
关键字:

一个表格导入另一个表格