日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts导入Excel进行解析

發布時間:2025/4/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts导入Excel进行解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

struts導入Excel進行POI解析,源碼地址:http://download.csdn.net/detail/bq1073100909/7887635

非常感謝http://blog.csdn.net/cherishme1988/article/details/8068339,我是在他的博客上學習的,成功實現。


新建一個web項目test,添加struts框架,我使用的工具是myeclipse。

添加如下jar包:poi-3.0-rc4-20070503.jar;poi-contrib-3.0-rc4-20070503.jar;poi-ooxml-schemas-3.7-beta3.jar;poi-scratchpad-3.0-rc4-20070503.jar

在源碼中已經添加,在WebRoot下WEB-INF下的lib中。


Excel表中的數據格式如下圖:



新建Person類:不過多解釋直接代碼上:

package bean;public class Person {private Integer id;private String name;private int 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;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String toString(){return this.id+" "+this.name+" "+this.age;} }
修改index.jsp,使之可以上傳Excel文件:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><base href="<%=basePath%>"><title>excel導入測試</title></head><body><s:form theme="simple" action="uploadaction!upload" enctype="multipart/form-data" method="post">選擇文件:??<s:file name="ufile" accept="excel/*" id="ufilename" /> <br><s:submit value="提交"></s:submit></s:form></body> </html>

struts.xml的配置文件,簡單易懂,不多解釋:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts><package name="exceltest" namespace="/" extends="struts-default"><action name="uploadaction" class="org.action.ExcelAction"><result name="success">/success.jsp</result></action></package> </struts>
下面進入正題,action中的Excel導入,首先進行文件的上傳,在WebRoot下面建文件夾upload,將上傳的文件保存在這里。

package org.action;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.List;import org.apache.commons.io.FileUtils; 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.struts2.ServletActionContext; import org.myutil.ExcelUtil;import bean.Person;import com.opensymphony.xwork2.ActionSupport;public class ExcelAction extends ActionSupport {private String ufileFileName;private File ufile;public String upload(){String directory = "/upload";//定義文件路徑String targetFileName = ufileFileName;String targetDirectory = ServletActionContext.getServletContext().getRealPath(directory);//生成上傳對象File target = new File(targetDirectory,targetFileName);//如果出存在就覆蓋if(target.exists()){target.delete();System.out.println("文件已經存在,將要覆蓋");}try {FileUtils.copyFile(ufile, target);} catch (IOException e) {e.printStackTrace();}List<Person> list = ExcelUtil.importExcel(ufileFileName);int size = 0;System.out.println(size = list.size());for(int i=0;i<size;i++){System.out.println(list.get(i).toString());}return "success";}public String getUfileFileName() {return ufileFileName;}public void setUfileFileName(String ufileFileName) {this.ufileFileName = ufileFileName;}public File getUfile() {return ufile;}public void setUfile(File ufile) {this.ufile = ufile;} }

ExcelUtil.importExcel(ufileFileName);就是對Excel進行解析,傳入文件的名字,我單獨寫了一個類定義一個靜態方法對Excel進行操作。

ExcelUtil.java代碼:

package org.myutil;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.struts2.ServletActionContext;import bean.Person;public class ExcelUtil {public static List<Person> importExcel(String ufileFileName){String directory = "/upload";String targetDirectory = ServletActionContext.getServletContext().getRealPath(directory);File target = new File(targetDirectory,ufileFileName);//讀取上傳的文件List<Person> list = new ArrayList<Person>(); //讀取上傳的文件try {FileInputStream fis = new FileInputStream(target);//初始化一個工作簿HSSFWorkbook wb = new HSSFWorkbook(fis);//第一張表單HSSFSheet sheet = wb.getSheetAt(0);int rowNum = sheet.getLastRowNum()+1; //row行初始行數位0; System.out.println("sheet表行數為:"+rowNum); //打印總行數 //上傳的Excel表帶有表頭,所以從第二行開始,索引為1 ;for(int i=1;i<rowNum;i++){Person person = new Person(); //new一個project實例 HSSFRow row = sheet.getRow(i);int cellNum = row.getLastCellNum();for(short j=0;j<cellNum;j++){ // HSSFCell cell = row.getCell(j);String cellValue = null ;//類型轉換; if(cell.getCellType() == HSSFCell.CELL_TYPE_STRING){cellValue = cell.getStringCellValue();}else if(HSSFCell.CELL_TYPE_NUMERIC ==cell.getCellType() ) { //對數字的處理 if (HSSFDateUtil.isCellDateFormatted(cell)) { Date d = cell.getDateCellValue(); //對日期處理 DateFormat formater = new SimpleDateFormat("yyyy-MM-dd hh:mm"); cellValue = formater.format(d); } else {// 其余按照數字處理 cellValue = String.valueOf((int)cell.getNumericCellValue()) ; }}switch(j){case 0:person.setId(Integer.parseInt(cellValue.trim()));break;case 1:person.setName(cellValue.trim());break;case 2:person.setAge(Integer.parseInt(cellValue.trim()));break;}}list.add(person);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return list;} }
這樣就可以把Excel中的數據封裝到Person類實例化的實體中并保存到list進行返回,如果進行ssh開發,建議把id去掉,因為保存數據是不需要id,這個是自動增長,在switch中從1開始就可以了,然后進行save(entity)存儲到數據庫。我做的這個例子主要是學習解析的原理。如果有其他的字段請自己添加。(其中對數據類型進行轉換的時候要注意哦)

運行如下:


結果如下:


轉載于:https://my.oschina.net/zjcx/blog/679589

總結

以上是生活随笔為你收集整理的struts导入Excel进行解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。