怎样用POI将poi上传excel文件件里插入的一个对象文件上传到后台。

java 利用 poi 生成 Excel文件的通用例子 - 为程序员服务
java 利用 poi 生成 Excel文件的通用例子
在用java 写数据库应用的时候, 通常会生成各种报表,而这些报表可能会被导出为各种格式的文件,比如Excel文档,pdf 文档等等. 今天先做了一个生成Excel 文档的例子,主要解决以下问题:1. 生成 Excel 文档.2. 保护生成Excel文档,设置密码访问.3. 自动对生成的Excel 文档第一行标题栏设置成filter 过滤形式, 方便用户使用.源代码在本文最后提供下载 用 apache&&POI 生成 Excel 文档公用类 package com.yihaomen.poi.
import java.lang.reflect.InvocationTargetE
import java.lang.reflect.M
import java.text.SimpleDateF
import java.util.D
import java.util.HashM
import java.util.L
import java.util.M
import org.apache.poi.hssf.usermodel.HSSFCellS
import org.apache.poi.hssf.usermodel.HSSFF
import org.apache.poi.hssf.usermodel.HSSFS
import org.apache.poi.hssf.usermodel.HSSFW
import org.apache.poi.hssf.util.HSSFC
import org.apache.poi.ss.usermodel.C
import org.apache.poi.ss.usermodel.R
import org.apache.poi.xssf.usermodel.XSSFS
* Excel util, create excel sheet, cell and style.
* @param &T& generic class.
public class ExcelUtil&T& {
public HSSFCellStyle getCellStyle(HSSFWorkbook workbook,boolean isHeader){
HSSFCellStyle style = workbook.createCellStyle();
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setLocked(true);
if (isHeader) {
style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
HSSFFont font = workbook.createFont();
font.setColor(HSSFColor.BLACK.index);
font.setFontHeightInPoints((short) 12);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
style.setFont(font);
void generateHeader(HSSFWorkbook workbook,HSSFSheet sheet,String[] headerColumns){
HSSFCellStyle style = getCellStyle(workbook,true);
Row row = sheet.createRow(0);
row.setHeightInPoints(30);
for(int i=0;i&headerColumns.i++){
Cell cell = row.createCell(i);
String[] column = headerColumns[i].split("_#_");
sheet.setColumnWidth(i, Integer.valueOf(column[1]));
cell.setCellValue(column[0]);
cell.setCellStyle(style);
@SuppressWarnings({ "rawtypes", "unchecked" })
HSSFSheet creatAuditSheet(HSSFWorkbook workbook,String sheetName,
List&T& dataset,String[] headerColumns,String[] fieldColumns) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
HSSFSheet sheet = workbook.createSheet(sheetName);
sheet.protectSheet("");
generateHeader(workbook,sheet,headerColumns);
HSSFCellStyle style = getCellStyle(workbook,false);
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
int rowNum = 0;
for(T t:dataset){
rowNum++ ;
Row row = sheet.createRow(rowNum);
row.setHeightInPoints(25);
for(int i = 0; i & fieldColumns. i++){
String fieldName = fieldColumns[i] ;
String getMethodName = "get" + fieldName.substring(0,1).toUpperCase() + fieldName.substring(1);
Class clazz = t.getClass();
Method getM
getMethod = clazz.getMethod(getMethodName, new Class[]{} );
Object value = getMethod.invoke(t, new Object[]{});
String cellValue = "";
if (value instanceof Date){
Date date = (Date)
cellValue = sd.format(date);
cellValue = null != value ? value.toString() : "";
Cell cell = row.createCell(i);
cell.setCellStyle(style);
cell.setCellValue(cellValue);
} catch (Exception e) {
}这一个公用的类,主要生成Excel的头,正文,以及Excel 文档的样式。看方法名称基本就可以知道这个方法是干什么用的. 写一个测试类测试生成Excel文档 package com.yihaomen.poi.
import java.io.FileOutputS
import java.io.IOE
import java.lang.reflect.InvocationTargetE
import java.util.ArrayL
import java.util.L
import org.apache.poi.hssf.usermodel.HSSFW
import com.yihaomen.poi.sample.ExcelU
import com.yihaomen.poi.sample.U
public class PoiTest {
    
     /*excel column formate:column_#_width, excel中每一列的名称*/
public static final String[] USER_RECORES_COLUMNS = new String[]{
"User Name_#_3000",
"Address_#_7000"
/*the column will display on xls files. must the same as the entity fields.对应上面的字段.*/
public static final String[] USER_RECORES_FIELDS = new String[]{
"name","address"
    
    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException {
        List&User& users = new ArrayList&User&();
        for(int i=0; i&10;i++){
            User u = new User();
            u.setAddress("address :" + i);
            u.setName("name: "+ i);
            u.setAge(i);
            users.add(u);
        }
        
        //实际项目中,这个list 估计是从数据库中得到的
        
        HSSFWorkbook workbook = new HSSFWorkbook();
        ExcelUtil&User& userSheet = new ExcelUtil&User&();
        userSheet.creatAuditSheet(workbook, "user sheet xls",
users, USER_RECORES_COLUMNS, USER_RECORES_FIELDS);
        
        FileOutputStream fileOut = new FileOutputStream("d:/yihaomen_user_test.xls");
        workbook.write(fileOut);
fileOut.close();
    }
}这里直接保存文件到 D 盘下面,主要是为了自己测试方便. 另外还需要一个测试需要的实体类 User.java:package com.yihaomen.poi.
public class User {
    
    private S
    
    private S
    
    public String getName() {
        
    }
    public void setName(String name) {
        this.name =
    }
    public int getAge() {
        
    }
    public void setAge(int age) {
        this.age =
    }
    public String getAddress() {
        
    }
    public void setAddress(String address) {
        this.address =
    }
}运行测试类,生成Excel 文档如下:生成的文档,你是不能修改的,原因很简单,设置了一个空密码,虽然是空密码,Excel 还是会出现提示,当然你可以直接解保护. 实现的主要代码是在 ExcelUtil 中的 creatAuditSheet 方法中的:sheet.protectSheet(""); // 设置了一个空的密码如果要实现第一行标题自动过滤怎么处理呢,可以在上面提到的方法中加入如下代码:char[] endChar = Character.toChars( 'A' + (headerColumns.length - 1) );
String rangeAddress = "A1:" + String.valueOf(endChar) + "1";
sheet.setAutoFilter(CellRangeAddress.valueOf(rangeAddress));这样就能实现自动过滤了项目源代码提供下载,用到 apache poi 3.9 的jar&&包. 请自行下载poi-3.9.jarpoi-ooxml-3.9.jarpoi-ooxml-schemas-3.9.jar
原文地址:, 感谢原作者分享。
您可能感兴趣的代码如何提高poi读写excel文件(同一文件)的效率
[问题点数:40分,结帖人freedomqaz2008]
如何提高poi读写excel文件(同一文件)的效率
[问题点数:40分,结帖人freedomqaz2008]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2011年3月 Java大版内专家分月排行榜第三
2010年8月 硬件使用大版内专家分月排行榜第二
2010年7月 Windows专区大版内专家分月排行榜第三2009年1月 Windows专区大版内专家分月排行榜第三2008年12月 Windows专区大版内专家分月排行榜第三2006年8月 扩充话题大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。怎样用POI将excel文件里插入的一个对象文件上传到后台。_百度知道
怎样用POI将excel文件里插入的一个对象文件上传到后台。
如果是图片,已经能上传到后台了,但怎么上传文件???
提问者采纳
搞不清楚楼主要问的具体的问题了。
就是问怎样用poi把EXCEL里的插入的一个对象文件,(这文件的格式能是pdf,mp3...)上传到服务器。。
提问者评价
我自己已经解决了,但也谢谢这位朋友的回答。
其他类似问题
为您推荐:
文件上传的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 网站后台上传excel 的文章

 

随机推荐