poi excel文件的导入

使用poi来实现excel文件的导入导出。使用struts2来做处理。

首先看jsp页面:

index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>

        <title>导入数据</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    </head>
    <body>
        <h1>
            导入Excel数据
        </h1>

        <s:form action="import!importExcel.action" enctype="multipart/form-data" method="post">
        导入Excel文件:<s:file name="excelFile"></s:file>
            <br />
        <s:submit value="导入"></s:submit>
        </s:form>
    </body>
</html>

action中的主要代码:原来依然是通过文件上传的原理来实现,只不过导入是将文件里的数据进行解析。

package com.chinasoft.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.chinasoft.dao.StudentDAO;
import com.chinasoft.entity.ExcelWorkSheet;
import com.chinasoft.entity.Student;
import com.opensymphony.xwork2.ActionSupport;

public class ImportExcelAction extends ActionSupport
{

    private StudentDAO dao = new StudentDAO();
    private File excelFile;
    private String excelFileFileName;
    private ExcelWorkSheet<Student> excelWorkSheet;

    public File getExcelFile()
    {
        return excelFile;
    }

    public void setExcelFile(File excelFile)
    {
        this.excelFile = excelFile;
    }

    public String getExcelFileFileName()
    {
        return excelFileFileName;
    }

    public void setExcelFileFileName(String excelFileFileName)
    {
        this.excelFileFileName = excelFileFileName;
    }

    public ExcelWorkSheet<Student> getExcelWorkSheet()
    {
        return excelWorkSheet;
    }

    public void setExcelWorkSheet(ExcelWorkSheet<Student> excelWorkSheet)
    {
        this.excelWorkSheet = excelWorkSheet;
    }

    private Workbook createWorkBook(InputStream is) throws IOException
    {
        if (excelFileFileName.toLowerCase().endsWith("xls"))
        {
            return new HSSFWorkbook(is);
        }

        if (excelFileFileName.toLowerCase().endsWith("xlsx"))
        {
            return new XSSFWorkbook(is);
        }

        return null;

    }

    public String importExcel() throws Exception
    {
        Workbook workbook = createWorkBook(new FileInputStream(excelFile));
        Sheet sheet = workbook.getSheetAt(0);
        excelWorkSheet = new ExcelWorkSheet<Student>();
        excelWorkSheet.setSheetName(sheet.getSheetName());
        Row firstRow = sheet.getRow(0);
        Iterator<Cell> iterator = firstRow.iterator();
        List<String> cellNames = new ArrayList<String>();
        while (iterator.hasNext())
        {
            cellNames.add(iterator.next().getStringCellValue());
        }

        for (int i = 1; i <= sheet.getLastRowNum(); i++)
        {
            Row row = sheet.getRow(i);
            Student student = new Student();
            System.out.println(row.getCell(0).getNumericCellValue());
            //student.setId((int) row.getCell(1).getNumericCellValue());
            student.setName(row.getCell(1).getStringCellValue());
            //student.setSex(row.getCell(2).getStringCellValue());
            //student.setBirthday(row.getCell(3).getDateCellValue());
            excelWorkSheet.getData().add(student);
            //this.dao.addStudent(student);
        }
        return SUCCESS;
    }

}

struts的配置也没有多大的变化,如下:

<?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="chinasoft" extends="struts-default">
        <action name="import" class="com.chinasoft.action.ImportExcelAction">
            <result>/index.jsp</result>
        </action>
    </package>
</struts>    
时间: 2024-08-26 11:07:29

poi excel文件的导入的相关文章

excel 文件的导入

excel 文件的导入 1.\extra_apps\xadmin\plugins下,添加一个文件 excel.py 添加以下代码: import xadminfrom xadmin.views import BaseAdminPlugin,ListAdminViewfrom django.template import loader # excel 导入class ListImportExclePlugin(BaseAdminPlugin): import_excel = False def i

SSM excel文件的导入导出

对于excel文件的导入导出,后台接收读取和建表封存都是固定死的,所以对于excel导入时,excel文件内容必须匹配后台相关对象,不然报错. excel文件导出,用<a><a/>标签即可,通过后台去完成 ,不可用ajax去写导出,ajax请求只是个"字符型"的请求,即请求的内容是以文本类型存放的. 文件的下载是以二进制形式进行的,ajax没法解析后台返回的文件流,所以无法处理二进制流response输出来下载文件. 当获取前台导入这个命令后,会通过Mybati

java项目中Excel文件的导入导出

1 package poi.excel; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.OutputStream; 6 import java.lang.reflect.Field; 7 import java.lang.reflect.Method; 8 import java.util.ArrayList; 9 import java.util.List; 10 11 import

C#中实现excel文件批量导入access数据表中

一 .界面简单设计如下: 二 .代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Data.S

poi excel文件上传并解析xls文件

1.jsp页面 <form action="hw/pe_xls_upload" method="post" enctype="multipart/form-data" > <table> <tr> <td>导入硬件序列号/密码Excel文件:</td> <td><input name="hwFile" type="file"/&g

多个Excel文件快速导入到DB里面

1 . 文件比较多,需要把这么多的数据都导入到DB里面,一个个导入太慢了,能想到的是先把数据整个到一个Excel中,然后再导入 2. 第一步准备合并Excel,新建一个新的excel,命名为totaldata.xlsx,记得excel2016版本不支持xlsx导入,只支持xls的选择,所以把上面的后缀名统一改为.xls 3.双击打开totaldata.xlsx,Alt+F11,快速打开编辑器,双击"Sheet1",输入如下脚本 Sub 工作薄间工作表合并() Dim FileOpen

python从Microsoft Excel文件中导入数据

excel中后缀为csv和xls,二者区别如下:1.xls 文件就是Microsoft excel电子表格的文件格式.2.csv是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中. 此文件,一行即为数据表的一行.生成数据表字段用半角逗号隔开.csv是文本文件,用记事本就能打开,XLS是二进制的文件只有用EXCEL才能打csv文件是以逗号为分隔符号,将各字段列分离出的一种ASCII文件.csv(*.csv) 文件格式只能保存活动工作表中的单元格所显示的文本和数值.工作表中所有的数

php读取excel文件并导入数据库(表头任意设定)

最近收到一个很奇葩的需求,要求上传excel员工工资表,表格表头不固定,导入后字段名为表头的拼音,每月导入一次,当月重复导入则覆盖现有的当月表头,并且可以按照在界面上按照月份筛选显示,我写的代码主要包含了几个稍微复杂的地方: 1.excel文件导入后表头汉字转拼音作为字段名 2.phpexcel类读取excel文件中如果列数超过26个(也就是超出A-Z的范围) 3.当月数据上传多次,最近一次会覆盖上一次的全部数据,并且字段重新建立 下面是我实现的代码,包含了phpexcel类,数据库类,上传类,

pl/sql 如何将Excel文件数据导入oracle的数据表?

1.准备导入数据的excel文件 注意:excel列名和数据表列名必须相同,excel文件sheet2和sheet3可以删除 1)excel文件格式 2)数据表格式 2.打开pl/sql ,找到工具---> ODBC导入器 3.选择excel文件,输入用户/密码 4.点击连接,找到磁盘中要导入的文件 5.选择要导入文件的工作表sheet1 6.切换到转入Oracle,选择要导入oracle的那个表 7.点击导入,执行成功,查看结果 原文地址:https://www.cnblogs.com/xie