读取excel文件

首先建立一个操作Excel的工具类,只有读取的方法。这个工具类使用的是jxl.jar方式。

import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.*;
import jxl.write.Number;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.Boolean;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class ExcelOperateUtils{
    public static List<Map<String,String>> readExcel(File file) {
        InputStream stream = null;
        Workbook workBook = null;
        List<Map<String,String>> data = new ArrayList<Map<String,String>>();
        if (!file.exists()) {
            System.out.println("读取excel文件失败:路径或文件名不存在");
            return null;
        }
        try {
            stream = new FileInputStream(file);
            workBook = Workbook.getWorkbook(stream);
            Sheet sheet = workBook.getSheet(0);
            int columns = sheet.getColumns();
            int rows = sheet.getRows();
            String[] keys = new String[columns];
            for(int i = 0;i<columns;i++){
                keys[i] = sheet.getCell(i,0).getContents();
            }
            for(int i = 1;i<rows;i++){
                Map<String,String> rowMap = new HashMap<String,String>();
                for(int j = 0;j<columns;j++){
                    Cell cell = sheet.getCell(j,i);
                    String cellValue = cell.getContents();
                    rowMap.put(keys[j],cellValue);
                }
                data.add(rowMap);
            }
        } catch (Exception e) {
            System.out.println("读取excel文件失败:" + e.getMessage());
            return null;
        } finally {
            /** *********关闭流和工作簿************* */
            try {
                if (workBook != null) {
                    workBook.close();
                }
                if (stream != null) {
                    stream.close();
                }
            } catch (Exception ex) {
                System.out.println("关闭文件流失败:" + ex.getMessage());
                return null;
            }
        }
        return data;
    }
}

然后是一个Action负责获取file文件,并且使用工具类将excel内的数据转换为List<Map<String,String>>的格式。


public class ExcelAction{
 private File file;
 private String fileFileName;

 public String achieveDataFromExcel(){
  if(file != null){
   List<Map<String,String>> excelMap = ExcelOperateUtils.readExcel(file);
   return "success";
  }else{
   return "select";
  }
 }

  public File getFile() {
        return file;
  }

  public void setFile(File file) {
        this.file = file;
  }

  public String getFileFileName() {
        return fileFileName;
  }

  public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
  }
}
然后是struct的配置文件(excelAction的配置在spring中,也可以直接写class的地址如 com.test.ExcelAtion,result.jsp只是一个简单的显示界面,就不列出来了):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "struts-2.1.dtd" >
<struts>
        <action name="achieveDataFromExcel" class="excelAtction" method="achieveDataFromExcel">
            <result name="select">/WEB-INF/jsp/test/selectExcel.jsp</result>
            <result name="success">/WEB-INF/jsp/result.jsp</result>
            <interceptor-ref name="fileUploadStack"></interceptor-ref>
        </action>
</struts>

selectExcel.jsp的代码为:

<s:form action="insertEpisodeFromExcel" namespace="/content" name="insertEpisodeFromExcel" method="POST" enctype="multipart/form-data" onsubmit="return(check())">
        <s:file name="file" accept="application/vnd.ms-excel" />
        <input type="submit" value="确认"/>
</s:form>


<script>
    function check(){
        var file1 = window.document.getElementById("file").value;
        while(file1.substring(0,1) == ' '){
            file1 = file1.substring(1, file1.length);
        }
        if(file1 == ''){
            alert("请选择文件");
            return false;
        }

        var type=upload.file.value.match(/^(.*)(\.)(.{1,8})$/)[3];
        type=type.toUpperCase();
        if(type=="XLS" || type == "XLSX"){
            return   true;
        }
        else{
            alert("上传类型有误");
            return   false;
        }
    }
</script>



以上,一个简单的可以从本地获取excel文件,并读取数据的程序就基本实现了.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值