struts1.x的例子,struts2.x可以参考自己修改
1.action的写法
import java.io.*;
import java.sql.*;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import org.apache.commons.beanutils.BeanUtils;
public class Action {
/**//*
* 把数据库中的字段导入到Excel ,并生成Excel文档
**/
public ActionForward getDownload(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) throws Exception {
Form fm = (Form) actionForm;
// Excel 文件存放在服务器的相对路径下
String outputFile = request.getRealPath("/tmp/Excel.xls");
try {
// 创建新的Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在Excel 工作簿中建一工作表
HSSFSheet sheet = workbook.createSheet("Sheet1");
// 设置单元格格式(文本)
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("@"));
// 在索引0的位置创建行(第一行)
HSSFRow row = sheet.createRow((short) 0);
HSSFCell cell1 = row.createCell((short) 0);// 第一列
HSSFCell cell2 = row.createCell((short) 1);
HSSFCell cell3 = row.createCell((short) 2);
// 定义单元格为字符串类型
cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
cell2.setCellType(HSSFCell.CELL_TYPE_STRING);
cell3.setCellType(HSSFCell.CELL_TYPE_STRING);
cell1.setEncoding(HSSFCell.ENCODING_UTF_16);
cell2.setEncoding(HSSFCell.ENCODING_UTF_16);
cell3.setEncoding(HSSFCell.ENCODING_UTF_16);
// 在单元格中输入数据
cell1.setCellValue("姓名");
cell2.setCellValue("性别");
cell3.setCellValue("年龄");
Connection connection = session.connection();
String sql = "Select t.name, t.sex, t.age from table t where t.sex = ?";
try {
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, fm.getSex());// 传入查询条件
ResultSet rs = ps.executeQuery();// 查询结果存入rs
connection.commit();// 执行SQL
while (rs.next()) {
//设置j行从第二行开始
int j = 1;
row = sheet.createRow((short) j);
//设置i列从第二列开始
for (int i = 1; i <= 3; i++) {
HSSFCell cell = row.createCell((short) (i-1));
// 设置单元格格式
cell.setCellStyle(cellStyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(rs.getString(i));
}
j++;
}
request.setAttribute("message", "文件生成成功!");
} catch (SQLException e) {
request.setAttribute("message", "创建文件失败!");
e.printStackTrace();
}
// 删除路径下同名的Excel 文件
File path = new File(outputFile);
path.delete();
// 新建一输出文件流
FileOutputStream fOut = new FileOutputStream(outputFile);
// 把相应的Excel 工作簿存盘
workbook.write(fOut);
// 操作结束,关闭文件
fOut.flush();
fOut.close();
//该处如果Excel过大会影响效率,谁有好的想法可以提出来参考(不过从页面下载完后就会清空)
request.getSession().setAttribute("Download", outputFile);
} catch (Exception ioexception) {
request.setAttribute("message", "创建文件失败!");
return actionMapping.findForward("outJSP");
}
return actionMapping.findForward("outJSP");
}
/**//*
* 从Excel文件中读取数据,并导入到数据库中
**/
public ActionForward getUpload(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) throws Exception {
// 获取excel 文件
Form fm = (Form) actionForm;
FormFile formfile = fm.getUploadfile();
InputStream inputstream = formfile.getInputStream();
fm.clear();// 清空
Session session = HibernateSession.currentSession();
ArrayList list = new ArrayList();
int input = 0; //导入记数
String name = null;
String sex = null;
String age = null;
try {
//通过得到的文件输入流inputstream创建一个HSSFWordbook对象
HSSFWorkbook hssfworkbook = new HSSFWorkbook(inputstream);
HSSFSheet hssfsheet = hssfworkbook.getSheetAt(0);//第一个工作表
HSSFRow hssfrow = hssfsheet.getRow(0);//第一行
//遍历该表格中所有的工作表,i表示工作表的数量 getNumberOfSheets表示工作表的总数
for (int i = 0; i < hssfworkbook.getNumberOfSheets(); i++) {
hssfsheet = hssfworkbook.getSheetAt(i);
//遍历该行所有的行,j表示行数 getPhysicalNumberOfRows行的总数
for (int j = 1; j < hssfsheet.getPhysicalNumberOfRows(); j++) {
hssfrow = hssfsheet.getRow(j);
//判断是否还存在需要导入的数据
if (hssfrow == null) {
System.out.println("这里已没有数据,在第"+i+"列,第"+j+"行");
break;
}
/** *//**将EXCEL中的第 j 行,第一列的值插入到实例中*/
if (hssfrow.getCell((short) 0) == null) {
name = "";
} else if (hssfrow.getCell((short) 0).getCellType() == 0) {
name = new Double(hssfrow.getCell((short) 0).getNumericCellValue()).toString();
}
//如果EXCEL表格中的数据类型为字符串型
else {
name = hssfrow.getCell((short) 0).getStringCellValue().trim();
}
/** *//**将EXCEL中的第 j 行,第二列的值插入到实例中*/
//姓名
if(hssfrow.getCell((short) 1) == null){
sex = "";
} else if(hssfrow.getCell((short) 1).getCellType() == 0) {
sex = new Double(hssfrow.getCell((short) 1).getNumericCellValue()).toString();
}
//如果EXCEL表格中的数据类型为字符串型
else {
sex = hssfrow.getCell((short) 1).getStringCellValue().trim();
}
/** *//**将EXCEL中的第 j 行,第三列的值插入到实例中*/
//姓名
if(hssfrow.getCell((short) 1) == null){
age = "";
} else if(hssfrow.getCell((short) 1).getCellType() == 0) {
age = new Double(hssfrow.getCell((short) 1).getNumericCellValue()).toString();
}
//如果EXCEL表格中的数据类型为字符串型
else {
age = hssfrow.getCell((short) 1).getStringCellValue().trim();
}
name = name.trim();
sex = sex.toUpperCase();
if (name.equals("")) {
error.setName(name);
error.setMessage("姓名不能为空");
list.add(error);
continue;
} else {
fm.setName(name);
fm.setSex(sex);
fm.setAge(age);
session.save(fm);
}
//导入成功加1
input++;
}
}
session.saveObjs(list.toArray());
} catch () {
}
}
}
2.Form的写法
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
public class Form extends ActionForm {
// 上传的文件
private FormFile _flddo;
public void setUploadfile(FormFile formfile) {
_flddo = formfile;
}
public FormFile getUploadfile() {
return _flddo;
}
public void clear() {
_flddo = null;
}
}
3.上传页面Upload.jsp
<%@ page contentType="text/html; charset=GBK" language="java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<html>
<html:form action="/Action.do?method=getUpload" method="POST" enctype="multipart/form-data">
<html:file property="uploadfile" size="80%" />
<input type="button" value="导 入" onclick="upload(this.form)" class="buttonGray">
</html:form>
</html>
<script language="javascript">
function upload(obj)
{
if(confirm("您现在选择的是XXX,您确定要导入吗?"))
{
var uploadfile = document.all.uploadfile.value;
if((null == uploadfile) ||( "" == uploadfile))
{
alert("上传文件没有指定!");
return false;
}
obj.action = '<html:rewrite page="/Action.do?method=getUpload"/>';
obj.submit();
}
}
</script>
4.下载页面Download.jsp
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%
//获取下载文件
String download = (String) request.getSession().getAttribute("Download");
//清空文件
request.getSession().removeAttribute("Download");
%>
<html>
下传文件 <a href="<%=download %>" name="下载">下载</a>
</html>
分享到:
相关推荐
本篇文章将详细介绍如何在Spring MVC项目中使用Apache POI库来实现Excel的导入和导出。 Apache POI是Apache软件基金会的一个开源项目,专门用于读写Microsoft Office格式的文件,包括Excel。在Java中,POI提供了API...
下面将详细解释如何使用 POI 实现 Excel 的导入导出功能。 首先,为了导出 Excel,我们需要创建一个 `HSSFWorkbook` 对象,这是 POI 中表示 Excel 工作簿的类。然后,我们可以创建一个或多个 `HSSFSheet` 对象来...
利用开源组件POI3.0.2,用java语言实现了动态导出Excel文档,并且也实现了Excel文档的导入。有完整的例子,可直接使用。ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat...
本例子将详细介绍如何使用Apache POI库导出Excel文件。 首先,我们需要添加Apache POI库到我们的项目中。在给定的文件列表中,我们看到`poi-2.5.1.jar`,这是Apache POI的一个早期版本。现代项目通常会使用更新的...
利用开源组件POI3.0.2,用java语言实现了动态导出Excel文档,并且也实现了Excel文档的导入。有完整的例子,可直接使用。ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat...
在这个例子中,开发者使用的是`poi-3.2.jar`版本。POI库提供了对Excel文件操作的API,使得我们能够创建、修改和读取Excel文件。 在Struts2框架中,导出Excel功能主要通过一个Action类实现。Action类是Struts2的核心...
在Java编程中,导入和导出Excel数据是常见的需求,特别是在数据分析、报表生成或数据交换等场景。本示例将探讨如何使用Java处理Excel文件,主要依赖于Apache POI库和JExcelAPI库。这两个库提供了对Microsoft Excel...
在这个例子中,`importExcel`方法接收上传的Excel文件,将其转换为`InputStream`,然后传递给`ExcelService`进行数据解析。`exportExcel`方法则根据业务需求生成数据列表,调用`writeToExcel`方法将数据写入到响应流...
Apache POI是一个开源项目,主要用于读取和写入Microsoft Office格式...在JavaWeb项目中,结合POI处理Excel文件可以极大地提高数据导入导出的效率和灵活性。如果你正在处理这样的任务,了解和掌握POI将是非常有价值的。
5. **Excel导入导出**:在Java中,通常使用Apache POI库来处理Excel文件。POI提供了API,可以创建、修改和读取Excel文件。在导入时,程序会读取Excel文件中的数据,可能经过验证和转换,然后通过MyBatis保存到数据库...
在这个例子中,我们首先获取上传的文件,然后使用`WorkbookFactory.create()`方法创建一个`Workbook`对象来代表Excel文件。接着,我们访问第一个工作表,并遍历每一行,读取每行的第一列和第二列的值。注意,这里...
这个小Demo展示了Java POI在SSM项目中的基本应用,可以帮助开发者快速搭建Excel导入导出功能。通过学习和实践,你可以根据实际需求扩展功能,如验证数据、自定义样式、处理不同类型的单元格等。
在这个例子中,提供的压缩包包含了一个名为"一个excel.xls"的文件,你可以替换上述代码中的文件路径,运行程序来测试导入和打印Excel内容的功能。此外,"poiProject"可能是一个包含整个项目源代码的文件夹,你可以在...
在本文中,我们将深入探讨如何使用SpringBoot和Apache POI库来导出指定格式的Excel模板。Apache POI是Java领域广泛使用的库,用于读写Microsoft Office格式的文件,其中包括Excel(.xlsx 和 .xls)文件。SpringBoot...
在这个"domino xpags 开发 Excel导入导出完整例子"中,我们将深入探讨如何利用XPAGS来实现Excel文件的导入与导出功能,这对于企业级应用中数据管理和分析至关重要。 首先,让我们关注"导出excel.doc"文件。这个文档...
4. **Web集成**:理解如何在Web环境中使用NOPI,可能涉及到Servlets、JSP或者Spring MVC等Web框架,以及如何处理用户上传的Excel文件和生成下载的Excel响应。 5. **注释与文档**:由于描述中提到注释清晰,所以例子...
总的来说,这个项目涵盖了Java Web开发、数据库操作和Excel文件处理等多个方面,是学习和实践数据导入导出功能的好例子。通过这个项目,开发者可以深入理解SpringBoot的自动化配置、MyBatis的映射机制,以及Apache ...
标题中的“poi+jsp 实现excel的上传下载的小例子”是指使用Apache POI库与Java Server Pages(JSP)技术来处理Excel文件的上传和下载功能。Apache POI是一个流行的开源项目,它允许开发者在Java应用程序中创建、修改...