精华内容
下载资源
问答
  • java通过xml导出word和excell例子java通过xml导出word和excell例子java通过xml导出word和excell例子java通过xml导出word和excell例子
  • NULL 博文链接:https://suky.iteye.com/blog/621169
  • Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类   ============================== ©Copyright 蕃薯耀 2017年9月13日 http://www.cnblogs.com/fanshuyao/   直接上代码: ...

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

     

    ==============================

    ©Copyright 蕃薯耀 2017年9月13日

    http://www.cnblogs.com/fanshuyao/

     

    直接上代码:

    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.math.BigDecimal;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import javax.servlet.ServletOutputStream;
    
    import org.apache.commons.lang.StringUtils;
    
    public class ExportUtil {
    
    	/**
    	 * 只导出包含在includeFieldNames中的属性
    	 * @param sheetName 表格左下角的名称
    	 * @param firstRowTitle 第一行需要设置的title,为空则不设置
    	 * @param list 需要显示的数据集合
    	 * @param headers 表格属性列名数组
    	 * @param includeFieldNames 包含的实体属性
    	 * @param widths 列的宽度,不设置(为Null)则默认,设置则根据对应的列宽设置(可以是一个,可以是对应的数量,整形数字,如200)
    	 * @param outputStream 与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中
    	 * @param datetimePattern 时间形式,当为空(Null或空字符串)时默认为yyyy-MM-dd HH:mm:ss
    	 * @throws Exception
    	 */
    	@SuppressWarnings({ "unchecked", "rawtypes" })
    	public <T> void exportExcel(String sheetName, String firstRowTitle, List<T> list, String[] headers, String[] includeFieldNames, Integer[] widths,
    			ServletOutputStream outputStream, String datetimePattern) throws Exception {
    		
    		// 默认输出格式
    		if (StringUtils.isBlank(datetimePattern)) {
    			datetimePattern = "yyyy-MM-dd HH:mm:ss";
    		}
    		
    		// 创建一个excel应用文件
    		StringBuffer sb = new StringBuffer();
    		sb.append("<?xml version=\"1.0\"?>");
    		sb.append("\n");
    		sb.append("<?mso-application progid=\"Excel.Sheet\"?>");
    		sb.append("\n");
    		sb.append("<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\"");
    		sb.append("\n");
    		sb.append(" xmlns:o=\"urn:schemas-microsoft-com:office:office\"");
    		sb.append("\n");
    		sb.append(" xmlns:x=\"urn:schemas-microsoft-com:office:excel\"");
    		sb.append("\n");
    		sb.append(" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\"");
    		sb.append("\n");
    		sb.append(" xmlns:html=\"http://www.w3.org/TR/REC-html40\">");
    		sb.append("\n");
    		
    		sb.append("<Styles>\n");
    		
    		/*设置列头样式*/
    		sb.append("<Style ss:ID=\"header\" ss:Name=\"header\">\n");//ss:ID=“header”对应下面的Row ss:StyleID=“header”
    		sb.append("<Interior ss:Color=\"#c4d79b\" ss:Pattern=\"Solid\"/>\n");// 设置背景颜色
    		sb.append("<Font ss:FontName=\"微软雅黑\" x:CharSet=\"134\" ss:Bold=\"Bolder\" ss:Size=\"12\"/>\n");//设置字体
    		sb.append("</Style>\n");
    		
    		/*其它默认样式设置*/
    		sb.append("<Style ss:ID=\"Default\" ss:Name=\"Normal\">\n");
    		//sb.append("<Alignment ss:Vertical=\"Center\"/>\n");
    		sb.append("<Alignment ss:Horizontal=\"Center\" ss:Vertical=\"Center\" ss:WrapText=\"1\"/>\n");// 左中右设置,一个是水平,一个是垂直
    		sb.append("<Borders>\n");
    		sb.append("<Border ss:Position=\"Left\" ss:LineStyle=\"Continuous\" ss:Color=\"#666\" ss:Weight=\"1\"/>\n");//左边框设置
    		sb.append("<Border ss:Position=\"Right\" ss:LineStyle=\"Continuous\" ss:Color=\"#666\" ss:Weight=\"1\"/>\n");//右边框设置
    		sb.append("<Border ss:Position=\"Bottom\" ss:LineStyle=\"Continuous\" ss:Color=\"#666\" ss:Weight=\"1\"/>\n");//下边框设置
    		sb.append("<Border ss:Position=\"Top\" ss:LineStyle=\"Continuous\" ss:Color=\"#666\" ss:Weight=\"1\"/>\n");//上边框设置
    		sb.append("</Borders>\n");
    		sb.append("<Font ss:FontName=\"宋体\" x:CharSet=\"134\" ss:Size=\"12\"/>\n");
    		sb.append("<Interior/>\n");
    		sb.append("<NumberFormat/>\n");
    		sb.append("<Protection/>\n");
    		sb.append("</Style>\n");
    		
    		sb.append("</Styles>\n");
    		
    		try {
    			
    			// 生成表格
    			int headersLength = headers.length;
    			
    			sb.append("<Worksheet ss:Name=\"" + sheetName + "\">");
    			sb.append("\n");
    			sb.append("<Table ss:ExpandedColumnCount=\"" + headersLength
    					+ "\" ss:ExpandedRowCount=\"1000000\" x:FullColumns=\"1\" x:FullRows=\"1\">");
    			sb.append("\n");
    			
    			if(!StrUtils.isEmptyArray(widths)){
    				if(widths.length > 1){
    					for (int i = 0; i < headersLength; i++) {
    						sb.append("<Column ss:AutoFitWidth=\"0\" ss:Width=\""+widths[i]+"\"/>");
    					}
    				}else{
    					for (int i = 0; i < headersLength; i++) {
    						sb.append("<Column ss:AutoFitWidth=\"0\" ss:Width=\""+widths[0]+"\"/>");
    					}
    				}
    			}
    			
    			
    			// 输出第一行的标题
    			if(!StrUtils.isBlank(firstRowTitle)){
    				//ss:StyleID可以加row或者Cell,加在Row,整行(包括空的Cell)都有,加上Cell,只有Cell才有。
    				sb.append("<Row  ss:Height=\"30\">");
    				sb.append("<Cell ss:StyleID=\"header\" ss:MergeAcross=\""+ (headersLength - 1)+"\"><Data ss:Type=\"String\">" + firstRowTitle + "</Data></Cell>");
    				sb.append("</Row>");
    			}
    			
    			// 输出列头
    			sb.append("<Row>");
    			for (int i = 0; i < headersLength; i++) {
    				sb.append("<Cell ss:StyleID=\"header\"><Data ss:Type=\"String\">" + headers[i] + "</Data></Cell>");
    			}
    			sb.append("</Row>");
    			
    			// 构建表体数据
    			for (int j = 0; j < list.size(); j++) {
    				
    				sb.append("<Row>");
    				
    				T t = (T) list.get(j);
    				
    				for (int i = 0; i < includeFieldNames.length; i++) {
    					
    					// 获取属性名称
    					String fieldName = includeFieldNames[i];
    					
    					String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
    					
    					// 获取class对象
    					Class tCls = t.getClass();
    					
    					// 获取属性值
    					Object value = null;
    					
    					try {
    						// 获取class方法
    						Method getMethod = tCls.getMethod(getMethodName, new Class[] {});
    						
    						// 获取属性值
    						value = getMethod.invoke(t, new Object[] {});
    						
    					} catch (NoSuchMethodException e) {
    						// 继续循环
    						continue;
    					}
    					
    					// 判断值的类型后进行强制类型转换
    					String textValue = "";
    					if (value instanceof Integer) {
    						// int value = ((Integer) value).intValue();
    						textValue = value.toString();
    					} else if (value instanceof String) {
    						// String s = (String) value;
    						textValue = value.toString();
    					} else if (value instanceof Double) {
    						// double d = ((Double) value).doubleValue();
    						textValue = String.format("%.2f", value);
    					} else if (value instanceof Float) {
    						// float f = ((Float) value).floatValue();
    						textValue = value.toString();
    					} else if (value instanceof Long) {
    						// long l = ((Long) value).longValue();
    						textValue = value.toString();
    					} else if (value instanceof Boolean) {
    						// boolean b = ((Boolean) value).booleanValue();
    						textValue = value.toString();
    					} else if (value instanceof Date) {
    						Date date = (Date) value;
    						SimpleDateFormat sdf = new SimpleDateFormat(datetimePattern);
    						textValue = sdf.format(date);
    					} else if ((value instanceof BigDecimal)) {
    						textValue = value.toString();
    					} else {
    						if (value != null) {
    							continue;
    						}
    					}
    					
    					sb.append("<Cell><Data ss:Type=\"String\">");
    					
    					// 如果不是图片数据,就利用正则表达式判断textValue是否全部由数字组成
    					if (StringUtils.isNotBlank(textValue)) {
    						
    						Pattern p = Pattern.compile("^//d+(//.//d+)?$");
    						Matcher matcher = p.matcher(textValue);
    						if (matcher.matches()) {
    							// 是数字当作double处理
    							sb.append(Double.parseDouble(textValue));
    						} else {
    							sb.append(textValue);
    						}
    						
    					}
    					
    					sb.append("</Data></Cell>");
    					
    				}
    				
    				sb.append("</Row>");
    				sb.append("\n");
    				
    			}
    			
    			sb.append("</Table>");
    			sb.append("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
    			sb.append("\n");
    			sb.append("<ProtectObjects>False</ProtectObjects>");
    			sb.append("\n");
    			sb.append("<ProtectScenarios>False</ProtectScenarios>");
    			sb.append("\n");
    			sb.append("</WorksheetOptions>");
    			sb.append("\n");
    			sb.append("</Worksheet>");
    			sb.append("</Workbook>");
    			sb.append("\n");
    			
    		} catch (SecurityException e) {
    			e.printStackTrace();
    		} catch (IllegalArgumentException e) {
    			e.printStackTrace();
    		} catch (IllegalAccessException e) {
    			e.printStackTrace();
    		} catch (InvocationTargetException e) {
    			e.printStackTrace();
    		}
    		
    		try {
    			outputStream.write(sb.toString().getBytes());
    			outputStream.flush();
    			outputStream.close();
    			sb = null;
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				outputStream.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    	
    
    }
    

      

     

    使用方式:

    @RequestMapping("/exportMsCard")
    	public void exportMsCard(HttpServletRequest req, HttpServletResponse res, 
    			Integer pageIndex, Integer pageSize, 
    			String cardNo, String mobile, String cinemaBaseName, Date startDate, Date endDate) {
    		try {
    			if(endDate != null){
    				endDate = DateUtils.dateAdd(endDate, 1, false);
    			}
    			List<MsCard> msCards = msCardService.list(pageIndex, pageSize, 
    					cardNo, mobile, cinemaBaseName, startDate, endDate);
    			
    			String[] headers = { "会员卡号", "会员昵称", "手机号码", "影院名称", "创建时间"};
    			String[] includeFieldNames = { "cardNo", "nickname", "mobile", "cinemaBaseName", "createTime"};
    			// 设置文件后缀并编码
    			String fileName = new String("运营平台-会员卡包-会员卡列表.xls".getBytes("UTF-8"), "iso8859-1");
    			// 设置响应的编码方式;
    			res.setCharacterEncoding("gb2312");
    			res.setHeader("Content-disposition", "attachment; filename=" + fileName);
    			res.setContentType("application/msexcel;charset=UTF-8");
    			// 导出订单Excel
    			ExportUtil exportUtil = new ExportUtil();
    			exportUtil.exportExcel("sheet", "", msCards, headers, includeFieldNames, new Integer[]{200}, res.getOutputStream(), null);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    

      

     注意:不能直接通过Ajax请求,需要通过表单提交。

     

    xml方式转Excel用到的属性:



     

    补充一个:

    ss:MergeAcross 表示跨列合并,如下:

    // 输出第一行的标题
    if(!StrUtils.isBlank(firstRowTitle)){
    	//ss:StyleID可以加row或者Cell,加在Row,整行(包括空的Cell)都有,加上Cell,只有Cell才有。
    	sb.append("<Row  ss:Height=\"30\">");
    	sb.append("<Cell ss:StyleID=\"header\" ss:MergeAcross=\""+ (headersLength - 1)+"\"><Data ss:Type=\"String\">" + firstRowTitle + "</Data></Cell>");
    	sb.append("</Row>");
    }
    

      

     注意是否需要减1,因为表示是跨多少列,那就是合并其它的几列,不包括自己,所以需要减 1

     

    万能方法:

    如果突然需要增加某些未知的属性,可以自己先创建一个Excel文件,做一个模板出来,然后另存为Xml文件,注意是Xml文件,保存后打开Xml文件查看自己创建的模板的某些属性应该怎么设置。但打开的xml文件比较乱,所以通过搜索找到自己对应的那个格子。

     

    源码下载见:http://fanshuyao.iteye.com/blog/2393131

     

    =============================

    ©Copyright 蕃薯耀 2017年9月13日

    http://www.cnblogs.com/fanshuyao/

    展开全文
  • java 导入导出excelxml文件解析工具,减少工作量。
  • java实现导出Excel文件和XML文件
  • 目前java框架中能够生成excel文件的...其实很简单,随便新建一个excel文件,双击打开,然后点击“文件”-》“另存”,保存的类型xml表格”,保存之后用文本格式打开,就可以看到excel的字符串格式一览无遗了。
  • 介绍ExcelXML相互转化的Java实现的一些技术
  • 基于POI+XML配置模板Excel导出

    热门讨论 2014-04-14 16:48:27
    基于POI+XML配置模板Excel导出,代码简单易用,模板与html类似,配置极易上手。支持单sheet和多sheet导出。支持导出样式及单元格融合,表头融合
  • 1.依赖引用: <dependency> <groupId>com.github.a982338665</groupId> <artifactId>lf-execl-easy</artifactId> <version>1.0.0-RELEASE<...2.1 TestDept.java pack

    0.源码地址:

    https://github.com/a982338665/lf-execl-easy

    1.依赖引用:

    	<dependency>
            <groupId>com.github.a982338665</groupId>
            <artifactId>lf-execl-easy</artifactId>
            <version>1.0.0-RELEASE</version>
        </dependency>
    

    2.测试用例:

    2.1 TestDept.java

    package com.github.lfexecleasy.test;
    import com.github.lfexecleasy.anno.LFColume;
    import java.util.Date;
    
    /**
     * @author : Mr huangye
     * URL : CSDN 皇夜_
     * createTime : 2020/5/29 16:19
     */
    public class TestDept {
    
        @LFColume("id")
        private String id;
        @LFColume("名称")
        private String deptName;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getDeptName() {
            return deptName;
        }
    
        public void setDeptName(String deptName) {
            this.deptName = deptName;
        }
    }
    

    2.2 TestUser.java

    package com.github.lfexecleasy.test;
    import com.github.lfexecleasy.anno.LFColume;
    import java.util.Date;
    
    /**
     * @author : Mr huangye
     * URL : CSDN 皇夜_
     * createTime : 2020/5/29 16:19
     */
    public class TestUser {
    
        @LFColume("id")
        private String id;
        @LFColume("名称")
        private String name;
        @LFColume("年龄@1-1岁 2-2岁")
        private String age;
        @LFColume("时间")
        private Date time;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public Date getTime() {
            return time;
        }
    
        public void setTime(Date time) {
            this.time = time;
        }
    }
    

    2.3 测试:

    public static void main(String[] args) {
    
            //数据准备
            List<TestUser> testUsers = new ArrayList<>();
            for (int i = 0; i < 2; i++) {
                TestUser testUser = new TestUser();
                testUser.setAge("18");
                testUser.setId("12");
                testUser.setName("name");
                testUser.setTime(new Date());
                testUsers.add(testUser);
            }
            for (int i = 0; i < 1; i++) {
                TestUser testUser = new TestUser();
                testUser.setAge("1");
                testUser.setId("12");
                testUser.setName("name");
                testUser.setTime(new Date());
                testUsers.add(testUser);
            }
            //数据准备
            List<TestDept> testDept = new ArrayList<>();
            for (int i = 0; i < 2; i++) {
                TestDept testUser = new TestDept();
                testUser.setId("12");
                testUser.setDeptName("部门+" + i);
                testDept.add(testUser);
            }
     
            //导出全部
            ExportDataBase all1 = new ExportDataALL("sheet1", testUsers, TestUser.class);
            ExportDataBase all2 = new ExportDataALL("sheet2", testUsers, TestUser.class);
            ExportDataBase all3 = new ExportDataPart("sheet3", new String[]{"id", "部门名称"}, new String[]{"id", "deptName"}, testDept);
    
            all1.setExcelRuleInfo(new ExcelRuleInfo("hhh"));
    
            String fileName = "./TestOutputExcel.xlsx";
            ExportExcelUtils exportExcelUtils = new ExportExcelUtils();
            String s = exportExcelUtils.makeTable(all1, all2, all3);
    //        System.err.println(s);
            exportExcelUtils.outPutFile(fileName, s);
            //多sheet导出
    //        export(all1, all2);
    
        }
    
    展开全文
  • java导出excelxml、pdf格式的文档,简单易用。
  • Java大批量导出数据EXCEL
  • 最近项目需要导出一个复杂的excel,发现无论是使用 poi 还是阿里巴巴的 easyexcel 这种编程式的方式实现起来代码很麻烦,于是采用 freemarker 的方式,做法是先 真正的excel 另存 xml格式,然后 编辑此xml文件 写...

    最近项目上有一个导出复杂excel的需求,发现无论是使用 poi 还是使用阿里巴巴的 easyexcel ,实际上都是编程式的方式,实现起来代码比较复杂而且不便于维护,于是决定采用 freemarker 的方式,做法是先将 真正的excel 另存为 xml格式,然后 编辑此xml文件 写 freemarker 标签绑定数据,但是导出的 excel 文件其实还是文本格式的 xml文件,只是 office 可以识别而已,怎么生成 真正意义上的 二进制的 xls、xlsx文件呢?我们发现用 excel  打开 上述的xml ,另存为 xls、xlsx,生成的确实是真生的excel文件,那怎么用java调用呢,可以使用 jacob,下面就是具体步骤: 

    1. 引入依赖:

    <dependency>
        <groupId>net.sf.jacob-project</groupId>
        <artifactId>jacob</artifactId>
        <version>1.14.3</version>
    </dependency>

    2. 将 jacob-1.14.3-x64.dll 复制到 ${ JAVA_HOME }/bin 目录下

    3. 代码示例:

    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.Dispatch;
    import com.jacob.com.Variant;
    
    public class JacobUtil   {
        public static final int WORD_HTML = 8;   
        public static final int WORD_TXT = 7;   
        public static final int EXCEL_HTML = 44;   
        public static final int EXCEL_XML = 46;
        public static final int EXCEL_XML_2_XLS = 1;
        public static final int EXCEL_XML_2_XLSX = 51;
    
        
        public static void main(String[] args) {
            // excelToHtml( "E:\\xxx\\任务审核信息 (74).xlsx","E:\\xxx\\任务审核信息 (74).html" );
            xml2xls( "E:\\xxx\\任务审核信息 (74).xml","E:\\xxx\\任务审核信息 (74).xls" );
            xml2xlsx( "E:\\xxx\\任务审核信息 (74).xml","E:\\xxx\\任务审核信息 (74).xlsx" );
        }
    
        /**
          * WORD转HTML
          * @param docfile WORD文件全路径
          * @param htmlfile 转换后HTML存放路径
          */  
        public static void wordToHtml(String docfile, String htmlfile){
             ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
            try  {   
                 app.setProperty("Visible", new Variant(false));
                 Dispatch docs = app.getProperty("Documents").toDispatch();
                 Dispatch doc = Dispatch.invoke(   
                         docs,   
                        "Open",   
                         Dispatch.Method,   
                        new Object[] { docfile, new Variant(false),   
                                new Variant(true) }, new int[1]).toDispatch();   
                 Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {   
                         htmlfile, new Variant(WORD_HTML) }, new int[1]);   
                 Variant f = new Variant(false);   
                 Dispatch.call(doc, "Close", f);   
             }   catch (Exception e)   {   
                 e.printStackTrace();   
             }    finally  {   
                 app.invoke("Quit", new Variant[] {});   
             }   
         }   
      
        /**
          * EXCEL转HTML
          * @param xlsfile EXCEL文件全路径
          * @param htmlfile 转换后HTML存放路径
          */  
        public static void excelToHtml(String xlsfile, String htmlfile)   {   
             ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动word   
            try  {   
                 app.setProperty("Visible", new Variant(false));   
                 Dispatch excels = app.getProperty("Workbooks").toDispatch();   
                 Dispatch excel = Dispatch.invoke(   
                         excels,   
                        "Open",   
                         Dispatch.Method,   
                        new Object[] { xlsfile, new Variant(false),   
                                new Variant(true) }, new int[1]).toDispatch();   
                 Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {   
                         htmlfile, new Variant(EXCEL_HTML) }, new int[1]);   
                 Variant f = new Variant(false);   
                 Dispatch.call(excel, "Close", f);   
             }   catch (Exception e)   {   
                 e.printStackTrace();   
             }   finally   {   
                 app.invoke("Quit", new Variant[] {});   
             }   
         }
    
        public static void xml2xls(String xmlfile, String xlsfile)   {
            ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动word
            try  {
                app.setProperty("Visible", new Variant(false));
                Dispatch excels = app.getProperty("Workbooks").toDispatch();
                Dispatch excel = Dispatch.invoke( excels,
                                            "Open",
                                                    Dispatch.Method,
                                                    new Object[] { xmlfile,
                                                                    new Variant(false),
                                                                    new Variant(true)
                                                                },
                                                    new int[1])
                                        .toDispatch();
    
                Dispatch.invoke( excel,
                        "SaveAs",
                        Dispatch.Method,
                        new Object[] { xlsfile,
                                new Variant( EXCEL_XML_2_XLS )
                        },
                        new int[1]);
                Variant f = new Variant(false);
                Dispatch.call(excel, "Close", f);
            }   catch (Exception e)   {
                e.printStackTrace();
            }   finally   {
                app.invoke("Quit", new Variant[] {});
            }
        }
    
        public static void xml2xlsx(String xmlfile, String xlsxfile)   {
            ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动word
            try  {
                app.setProperty("Visible", new Variant(false));
                Dispatch excels = app.getProperty("Workbooks").toDispatch();
                Dispatch excel = Dispatch.invoke( excels,
                        "Open",
                        Dispatch.Method,
                        new Object[] { xmlfile,
                                new Variant(false),
                                new Variant(true)
                        },
                        new int[1])
                        .toDispatch();
    
                Dispatch.invoke( excel,
                        "SaveAs",
                        Dispatch.Method,
                        new Object[] { xlsxfile,
                                new Variant( EXCEL_XML_2_XLSX )
                        },
                        new int[1]);
                Variant f = new Variant(false);
                Dispatch.call(excel, "Close", f);
            }   catch (Exception e)   {
                e.printStackTrace();
            }   finally   {
                app.invoke("Quit", new Variant[] {});
            }
        }
    }  

    展开全文
  • 概述:Java poi导入导出EXCEL工具类(兼容各版本) 一、功能说明 允许同时导入或导出多个sheet,同一sheet可同时存在多个数据块,按数据块划分处理数据。 二、配置文件示例及详细说明 1、导入xml配置示例如下(见...
  • NULL 博文链接:https://fanshuyao.iteye.com/blog/2393131
  • c#语言,需运行于2.0以上框架。直接双击应用程序即可运行。 因为是同事需要,临时做的,目前只实现以下功能: 1读取xml格式文件,并显示于datagridview中。 2可导出为excel格式文件。
  • java将数据库数据导出为Excel文件

    千次阅读 2017-05-02 16:09:27
    一、开发环境 使用框架:spring,springmvc,mybatis jdk1.7 tomcat 7.0 Apache POI组件操作(自导jar包) ...2.2、UserVOMapper.xml 代码 2.3、UserVOMapper.java代码 2.4、UserService代码

    一、开发环境

    ssm框架;MySQL;JDK1.7;Tomcat7.0
    Apache POI组件操作自导jar包),官网下载地址:点击打开链接

    二、具体内容

    2.1、数据库数据

    2.2、UserVOMapper.xml 核心代码

      <select id="queryExportUser" resultMap="BaseResultMap">
      	select * from user u
      </select>

    2.3、UserVOMapper.java 核心代码

    List<UserVO> queryExportUser();

    2.4、service层代码(最重要)

    package com.gusy.muban.service;
    import java.util.List;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.CellStyle;
    import org.apache.poi.ss.usermodel.HorizontalAlignment;
    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.streaming.SXSSFWorkbook;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import com.gusy.muban.dao.UserVOMapper;
    import com.gusy.muban.model.UserVO;
    
    /**  
    * @author gusy  
    */
    @Service
    public class UserService {
    	@Autowired
    	private UserVOMapper mapper;
    	
    	/**
    	 * 导出excel
    	 * @throws Exception 
    	 */
    	public Workbook queryExportUser() throws Exception{
    		List<UserVO> list=mapper.queryExportUser();   //读取数据库数据
    		String[] excelHeader={"账号ID","账号","用户名","密码"};  //设置Excel头部
    		Workbook wb = new SXSSFWorkbook(1000);
    		
    		Sheet sheet = wb.createSheet("Sheet1");//创建工作表
    		Row row = sheet.createRow(0);  //创建行,从0开始
    		CellStyle style = wb.createCellStyle();
    		style.setAlignment(HorizontalAlignment.CENTER);  //对齐方式
    		
    		//导入头部
    		for (int i = 0; i < excelHeader.length; i++) {
    			Cell cell = row.createCell(i);
    			cell.setCellValue(excelHeader[i]);
    			cell.setCellStyle(style);
    			sheet.setColumnWidth(1, (short) 6000);  //设置列宽
    		}
    		UserVO user=null;
    		//导入数据
    		for(int i=0 ; i<list.size();i++){
    			row = sheet.createRow(i + 1);  
    			user=list.get(i);
    			row.createCell(0).setCellValue(user.getId());   //设置单元格内容
    			row.createCell(1).setCellValue(user.getAccount());
    			row.createCell(2).setCellValue(user.getName());
    			row.createCell(3).setCellValue(user.getPassword());
    		}
    		return wb;
    	}
    }
    

    2.5 controller层代码

    package com.gusy.muban.controller;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.UUID;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.log4j.Logger;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.aspectj.apache.bcel.classfile.Constant;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.gusy.common.utils.FileUtil;
    import com.gusy.common.utils.ResultVO;
    import com.gusy.muban.service.UserService;
    
    
    
    /**  
    * @author gusy 
    */
    @Controller
    @RequestMapping("/user")
    public class UserController {
    	
    	private static Logger logger=Logger.getLogger(UserController.class);
    	
    	@Autowired
    	private UserService userService;
    	
    	/**
    	 * 导出excel
    	 * @param response
    	 * @param request
    	 */
    	@RequestMapping("/queryExportUser")
    	public void queryExportUser(HttpServletResponse response,HttpServletRequest request){
    		OutputStream ouputStream = null;
    		try {
    			Workbook wb = userService.queryExportUser();
    			FileUtil.setResponse(request,response,"用户表_"+UUID.randomUUID()+".xlsx");		
    			ouputStream = response.getOutputStream();
    			wb.write(ouputStream);
    			ouputStream.flush();
    		} catch (Exception e) {
    			logger.error("[queryExportUser]异常", e);
    		} finally {
    			if (ouputStream != null) {
    				try {
    					ouputStream.close();
    				} catch (IOException e) {
    					logger.error("[queryExportUser]输出流关闭异常", e);
    				}
    			}
    		}
    	}
    }

    2.6 网页代码

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    	String path = request.getContextPath();
    	pageContext.setAttribute("path", path);
    	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
    			+ path + "/";
    %>
    
    <!doctype html>
    <html>
    
    <head>
    <meta charset="utf-8">
    <title>主页</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport"
    	content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="${path }/common/layui/css/layui.css"
    	media="all">
    <script src="${path }/common/layui/layui.js"></script>
    <style type="text/css">
    .main {
    	text-align: center;
    	margin: 200px 0;
    }
    </style>
    </head>
    <body>
    
    	<div class="main">
    		<a href="#">
    			<button
    				class="layui-btn layui-btn-big layui-btn-normal layui-btn-radius" οnclick="exportUser()">导出</button>
    		</a>
    	</div>
    
    </body>
    <script type="text/javascript">
    	function exportUser(){
    		var url="/muban/user/queryExportUser.do"
    		window.location.href = url;
    	}
    </script>
    </html>

    三、运行结果


    补充:Fileutil setResponse方法代码
    	/**
    	 * 设置excel文件响应(解决火狐中文名问题)
    	 * @param request 请求对象
    	 * @param response 响应对象
    	 * @param filename 文件名
    	 * @throws Exception
    	 */
    	public static void setResponse(HttpServletRequest request,HttpServletResponse response,String filename) throws Exception{
    		String userAgent = request.getHeader("User-Agent");		
    		if(userAgent.toLowerCase().contains("firefox")){
    			filename = new String(filename.getBytes("UTF-8"), "ISO-8859-1");
    		}else{
    			filename = URLEncoder.encode(filename, "UTF-8");
    		}
    		response.setContentType(request.getServletContext().getMimeType(filename)); 		
    		response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", filename));	
    	}

    over!


    展开全文
  • 读取xml导出为excel

    2011-09-08 09:26:57
    读取xml导出为excel 读取xml导出为excel
  • Xml方式导出Excel

    千次阅读 2019-08-03 08:07:39
    根据导出xml 格式文件 ,用程序 生成类似的 xml文件 进行输出后缀名.xls的文件 第一标签是 xml文件头 第二标签好像是说文件默认用excle 方式打开 下面的 DocumentProperties Offic...
  • 读取路径导出至本地,其中包含excel数据转换
  • java导出excel

    2019-03-15 10:49:54
    提供java导出excel的pom.xml配置和逻辑代码,包括工具类和示例源码,可根据自己的需求改变即可
  • 写在前面:用户操作日志以xml、word、pdf、excel格式的文件导出。 1、导出xml 导出xml使用JAXB的注解实现,实体如下 import javax.xml.bind.annotation.*; import java.util.List; @XmlAccessorType...
  • java导出excelxml.doc

    2013-08-07 14:19:38
    按照XML格式保存数据(我们可以用EXCEL打开个表格文件,另存为XML格式后可以看到这样的格式) 我们按照XML的格式生成我们要另存的文件,举例如下: <?xml version="1.0"?> <?mso-application progid="Excel.Sheet...
  • 1. pom.xml 添加依赖 <!--poi start--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version> </...
  • java导出TXT和Excel文件

    热门讨论 2012-05-24 17:08:57
    导出Excel文件利用apache的poi第三方包,可在阿帕奇官网下载(最新版本3.8,支持office2010)。解压文件后,只需要把项目导入到eclipse,再hibernate.cfg.xml里连接Oracle的URL和用户名、密码更改下。参考entity...
  • 前端代码我就不写了,重点放在Java代码上。 首先是web.xml里面的代码,web.xml配置 &amp;lt;servlet&amp;gt; &amp;lt;servlet-name&amp;gt;ExpRetailServlet&amp;lt;/servlet-name&amp...
  • Java实现数据库批量导出Excel

    千次阅读 2020-02-21 11:27:54
    前言:之前的博客介绍了Java实现Excel批量导入数据库,昨天二哈兄弟说什么没有数据库导出Excel的呢?所以此篇博客主要针对数据库里面的数据导出Excel 1.导出前分析 众所周知Alibaba提供了开源的EasyExcel...
  • 解析xml模板导出Excel

    千次阅读 2017-09-03 22:45:16
    1.pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...
  • 原文地址:https://www.cnblogs.com/qaz110/p/4936544.html做管理系统比较爱用,还在像以前用html化...这个是方便找它的位置,像我这样是因为我的JAVA代码封装了map,我可以通过这样去取值2、这文件另存为xml表(....
  • 针对形形色色的导出方法及个人平时的工作经验,特将导出excel方法整理成通用的方法,根据xml配置来实现特定的导出。  此方法基于struts2框架实现,先看struts.xml配置文件中的配置方法: 1 <action name=...
  • java导出json数据到excel

    千次阅读 2019-06-26 23:10:16
    可以用前端js导,也可以使用后端的POI导出 前端导出 base64(s) { return window.btoa...exportExcel() { // 前端导出excel console.log(this.showList) let str = '<tr><td>代理名称</td&g...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,290
精华内容 4,916
关键字:

java将xml导出为excel

java 订阅