- 浏览: 41091 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanghonghui023:
楼主把架包共享依稀啊啊
import com.sinosof ...
再次封装POI,读写EXCEL。
直接上code
封装类的使用
package com.sinosoft.lis.pubfun; /** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author unascribed * @version 1.0 */ import com.sinosoft.utility.StrTool; import com.sinosoft.utility.DBConnPool; import java.io.*; import java.util.*; import java.sql.*; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.*; public class ExportExcel { public static class Format{ public ArrayList mListCell=null; public ArrayList mListBL = null; public ArrayList mListColWidth = null; } public static class Cell{ public Cell(){} public int col; public int row; public int width=1; public int height=1; public boolean bBorder=false; public boolean bBold=false; public String content=""; } public static class ListBlock{ private String companyCode; public ListBlock(String str){companyCode = str;}; public String[] colName=null; public String sql; public int row1=0; public int col1=0; public int row2; public int col2; public int size=0; public String[][] data=null; public boolean InitData(){ if(sql==null||sql.equals("")) return false; Connection conn=null; try{ conn=DBConnPool.getConnection(); if (conn==null) { System.out.println("数据库连接失败!"); return false; } data = exeSQL(sql,conn); if(data==null){ row2=row1; col2=col1; if(colName!=null){ row2++; col2+=colName.length; } } else{ row2=row1+data.length; size=data.length; if(colName!=null){ row2++; col2=col1+colName.length; } else if(data.length>1){ col2=col1+data[0].length; } else col2=col1; } } catch(Exception e){ System.out.println(e);return false; } finally{ try{conn.close();}catch(Exception e){}; } return true; } } public static void AddCellToList(ArrayList list,String text,int row,int col,int width,int height,boolean bBorder,boolean bBold){ Cell tCell = new Cell(); tCell.row=row; tCell.col=col; tCell.bBorder=bBorder; tCell.bBold=bBold; tCell.height=height; tCell.width=width; tCell.content=text; list.add(tCell); } public ExportExcel() { } public boolean write(Format format,BufferedOutputStream bos) { if(format==null) return false; ArrayList listCell = format.mListCell; ArrayList listLB = format.mListBL; ArrayList listColWidth = format.mListColWidth; if(null==listCell && null==listLB) return false; if(null==bos) return false; HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); try{ if(listColWidth!=null){ for(int i=0;i<listColWidth.size();i++){ String[] para = (String[])listColWidth.get(i); short nCol = (short)Integer.parseInt(para[0]); short nWidth = (short)Integer.parseInt(para[1]); sheet.setColumnWidth(nCol,nWidth); } } // Create a new font and alter it. HSSFFont fontBold = wb.createFont(); fontBold.setFontHeightInPoints((short)10); fontBold.setFontName("宋体"); fontBold.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); HSSFFont fontNormal = wb.createFont(); fontNormal.setFontHeightInPoints((short)10); fontNormal.setFontName("宋体"); fontNormal.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); HSSFCellStyle styleBorderBold = wb.createCellStyle(); styleBorderBold.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleBorderBold.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleBorderBold.setBorderRight(HSSFCellStyle.BORDER_THIN); styleBorderBold.setBorderTop(HSSFCellStyle.BORDER_THIN); styleBorderBold.setFont(fontBold); HSSFCellStyle styleBorderNormal = wb.createCellStyle(); styleBorderNormal.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleBorderNormal.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleBorderNormal.setBorderRight(HSSFCellStyle.BORDER_THIN); styleBorderNormal.setBorderTop(HSSFCellStyle.BORDER_THIN); styleBorderNormal.setFont(fontNormal); HSSFCellStyle styleBold = wb.createCellStyle(); styleBold.setFont(fontBold); HSSFCellStyle styleNormal = wb.createCellStyle(); styleNormal.setFont(fontNormal); if(listLB!=null){ for(int iLB=0;iLB<listLB.size();iLB++){ ListBlock currLB = (ListBlock)listLB.get(iLB); int startRow = currLB.row1; for(int i=0;currLB.colName!=null&&i<currLB.colName.length;i++){ int rowIndex = startRow; int colIndex = currLB.col1+i; HSSFRow row = sheet.getRow(rowIndex); if(row==null) row = sheet.createRow(rowIndex); HSSFCell cell = row.getCell((short)colIndex); if(cell==null) cell = row.createCell((short)colIndex); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellStyle(styleBorderBold); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(currLB.colName[i]); } if(currLB.colName!=null) startRow=currLB.row1+1; String[][] data = currLB.data; if(data!=null){ for(int i=0;i<data.length;i++){ for(int j=0;j<data[i].length;j++){ int rowIndex = startRow+i; int colIndex = currLB.col1+j; HSSFRow row = sheet.getRow(rowIndex); if(row==null) row = sheet.createRow(rowIndex); HSSFCell cell = row.getCell((short)colIndex); if(cell==null) cell = row.createCell((short)colIndex); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellStyle(styleBorderNormal); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(data[i][j]); } } } } } if(listCell!=null){ for(int i=0;i<listCell.size();i++){ Cell currCell = (Cell)listCell.get(i); for(int j=currCell.row;j<currCell.row+currCell.height;j++){ for(int k=currCell.col;k<currCell.col+currCell.width;k++){ HSSFRow trow = sheet.getRow(j); if(trow==null) trow = sheet.createRow(j); HSSFCell tcell = trow.getCell((short)k); if(tcell==null) tcell = trow.createCell((short)k); tcell.setCellType(HSSFCell.CELL_TYPE_STRING); tcell.setEncoding(HSSFCell.ENCODING_UTF_16); if(j==currCell.row&&k==currCell.col) tcell.setCellValue(currCell.content); if(currCell.bBorder){ if(currCell.bBold) tcell.setCellStyle(styleBorderBold); else tcell.setCellStyle(styleBorderNormal); } else{ if(currCell.bBold) tcell.setCellStyle(styleBold); else tcell.setCellStyle(styleNormal); } } } if(currCell.height>1||currCell.width>1) sheet.addMergedRegion(new Region(currCell.row,(short)currCell.col,currCell.row+currCell.height-1,(short)(currCell.col+currCell.width-1))); } } wb.write(bos); } catch(Exception e){ System.out.println(e); return false; } return true; } public static String[][] exeSQL(String sql,String companyCode){ String[][] retArray = null; Statement stmt = null; ResultSet rs = null; ResultSetMetaData rsmd = null; String mResult = ""; ArrayList tempList = new ArrayList(); System.out.println("ExportExcel.exeSQL() : " + sql.trim()); Connection conn=null; conn=DBConnPool.getConnection(); if (conn==null) { System.out.println("数据库连接失败!"); return null; } try { stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY ); rs = stmt.executeQuery( StrTool.GBKToUnicode( sql )); rsmd = rs.getMetaData(); int n = rsmd.getColumnCount(); int k = 0; // 取得总记录数 while( rs.next() ) { String[] tempRow = new String[n]; k++; for( int j = 1; j <= n; j++ ) { String strValue = ""; //根据数据类型取得数据的值 strValue = getDataValue( rsmd, rs, j ); tempRow[j-1] = strValue; } tempList.add(tempRow); } rs.close(); stmt.close(); if(tempList.size()>0){ retArray = new String[tempList.size()][]; for(int i=0;i<tempList.size();i++){ String[] row = (String[])tempList.get(i); retArray[i]=row; //for(int j=0;j<row.length;j++){ // retArray[i][j] = row[j]; //} } } } catch(Exception e) { e.printStackTrace(); try{ rs.close(); stmt.close(); } catch( Exception ex ) {} } finally{ try{conn.close();} catch( Exception ex ) {} } return retArray; } public static String[][] exeSQL(String sql,Connection conn){ String[][] retArray = null; Statement stmt = null; ResultSet rs = null; ResultSetMetaData rsmd = null; String mResult = ""; ArrayList tempList = new ArrayList(); System.out.println("ExportExcel.exeSQL() : " + sql.trim()); boolean connflag=true; if (conn==null) { System.out.println("数据库连接失败!"); return null; } try { stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY ); rs = stmt.executeQuery( StrTool.GBKToUnicode( sql )); rsmd = rs.getMetaData(); int n = rsmd.getColumnCount(); int k = 0; // 取得总记录数 while( rs.next() ) { String[] tempRow = new String[n]; k++; for( int j = 1; j <= n; j++ ) { String strValue = ""; //根据数据类型取得数据的值 strValue = getDataValue( rsmd, rs, j ); tempRow[j-1] = strValue; } tempList.add(tempRow); } rs.close(); stmt.close(); if(tempList.size()>0){ retArray = new String[tempList.size()][]; for(int i=0;i<tempList.size();i++){ String[] row = (String[])tempList.get(i); retArray[i]=row; //for(int j=0;j<row.length;j++){ // retArray[i][j] = row[j]; //} } } } catch(Exception e) { e.printStackTrace(); try{ rs.close(); stmt.close(); } catch( Exception ex ) {} } return retArray; } public static String getDataValue( ResultSetMetaData rsmd, ResultSet rs, int i ) { String strValue = ""; try { int dataType = rsmd.getColumnType( i ); int dataScale = rsmd.getScale( i ); int dataPrecision =rsmd.getPrecision(i); if( dataType == Types.CHAR || dataType == Types.VARCHAR ) strValue = StrTool.unicodeToGBK( rs.getString( i )); if( dataType == Types.TIMESTAMP || dataType == Types.DATE ) strValue = (new FDate()).getString( rs.getDate( i )); if( dataType == Types.DECIMAL || dataType == Types.DOUBLE ) strValue = String.valueOf( rs.getDouble( i )); if( dataType == Types.INTEGER || dataType == Types.SMALLINT ) strValue = String.valueOf( rs.getInt( i )); if( dataType == Types.NUMERIC ) { if( dataScale == 0 ) { if (dataPrecision==0) strValue = String.valueOf( rs.getDouble(i)); else strValue = String.valueOf( rs.getLong(i)); } else{ strValue = String.valueOf(rs.getBigDecimal(i)); System.out.println("BigDecimal: The Numeric is = "+strValue); } } if(strValue == null) strValue = ""; strValue = PubFun.getInt(strValue); } catch( Exception ex ){} return strValue; } public static void main(String[] args) { ExportExcel excel = new ExportExcel(); try{ ExportExcel.Format format = new ExportExcel.Format(); ArrayList listCell = new ArrayList(); ArrayList listLB = new ArrayList(); ArrayList listColWidth = new ArrayList(); format.mListCell=listCell; format.mListBL=listLB; format.mListColWidth=listColWidth; listColWidth.add(new String[]{"0","5000"}); // ExportExcel.Cell tCell = new ExportExcel.Cell(); // tCell.row=0; // tCell.col=0; // tCell.bBorder=true; // tCell.height=1; // tCell.width=5; // tCell.content="边框"; // listCell.add(tCell); // // tCell = new ExportExcel.Cell(); // tCell.row=1; // tCell.col=0; // tCell.bBorder=false; // tCell.height=1; // tCell.width=5; // tCell.content="无边框"; // listCell.add(tCell); // ExportExcel.ListBlock tLB = new ExportExcel.ListBlock("001"); //tLB.colName=new String[]{"编号","姓名"}; // tLB.sql="select * from lduser "; // tLB.col1=0; // tLB.row1=2; // tLB.InitData(); // listLB.add(tLB); ExportExcel.ListBlock tLB1 = new ExportExcel.ListBlock("001"); // tLB1.colName=new String[]{"集体合同号码","合同号码","被保人客户号","印刷号码","投保人客户号码","管理机构","处理机构","家庭保障号","与主被保人关系","与投保人关系","客户地址号码","客户内部号码","被保人名称","被保人性别","被保人出生日期","证件类型", // "证件号码","国籍","民族","户口所在地","婚姻状况","结婚日期","健康状况","身高","体重","学历","信用等级","银行编码","银行帐号","银行帐户名","入司日期","参加工作日期","职位","工资","职业类别","职业代码", // "职业(工种)","兼职(工种)","是否吸烟标志","保险计划编码","操作员","被保人状态","入机日期","入机时间","最后一次修改日期","最后一次修改时间","核保状态","最终核保人编码","核保完成日期","核保完成时间","","被保人数目"}; tLB1.colName=new String[]{"集体合同号码","被保人客户号","姓名","性别","出生日期","证件类型","证件号码","保险计划"}; tLB1.sql="select Grpcontno,InsuredNo,Name,Sex,Birthday,IDType,IDNo,ContPlanCode From LCInsured where Grpcontno='140110000000041'"; //tLB1.sql="select * From LDuser"; tLB1.col1=0; //tLB1.row1=tLB.row2+10; tLB1.row1=0; tLB1.InitData(); listLB.add(tLB1); File of = new File("d:\\excel.xls"); FileOutputStream ofs = new FileOutputStream(of); BufferedOutputStream bos = new BufferedOutputStream(ofs); excel.write(format,bos); } catch(Exception e){System.out.println(e);} finally{} } }
封装类的使用
<%@page contentType="text/html;charset=GBK" %> <%@page import="java.util.*" %> <%@page import="java.io.*" %> <%@page import="com.sinosoft.lis.pubfun.*"%> <%@page import="com.sinosoft.utility.*"%> <% //在此设置导出Excel的列名,应与sql语句取出的域相对应 GlobalInput tGlobalInput = new GlobalInput(); tGlobalInput = (GlobalInput)session.getValue("GI"); ExportExcel.Format format = new ExportExcel.Format(); ArrayList listCell = new ArrayList(); ArrayList listLB = new ArrayList(); ArrayList listColWidth = new ArrayList(); format.mListCell=listCell; format.mListBL=listLB; format.mListColWidth=listColWidth; ExportExcel.Cell tCell=null; ExportExcel.ListBlock tLB=null; String tManageCom = tGlobalInput.ComCode; String SerialNo ="0000000001"; String ExportExcelSQL =request.getParameter("ExportExcelSQL"); System.out.println("Excel语句="+ExportExcelSQL); listColWidth.add(new String[]{"0","5000"}); String sql = ExportExcelSQL; tLB = new ExportExcel.ListBlock("001"); tLB.colName = new String[]{"管理机构","管理机构名称","代理人编码","代理人姓名","证件类型编码","证件类型名称","证件号码","二次入司标记","入司职级","","入司标志","入司日期","离职日期","序列号" }; tLB.sql = sql; tLB.row1 = 0; tLB.col1 = 0; tLB.InitData(); listLB.add(tLB); try { response.reset(); response.setContentType("application/octet-stream"); //设置导出的xls文件名默认值 String HeaderParam = "\""+"attachment;filename="+SerialNo+".xls"+"\""; System.out.println("导出文件名称:"+HeaderParam); response.setHeader("Content-Disposition",HeaderParam); OutputStream outOS = response.getOutputStream(); BufferedOutputStream bos = new BufferedOutputStream(outOS); ExportExcel excel = new ExportExcel(); excel.write(format, bos); bos.flush(); bos.close(); } catch(Exception e) { System.out.println("导出Excel失败!"); %> <script language="JavaScript" type="text/javascript"> alert("导出Excel失败!"); </script>> <% }; %>
评论
1 楼
wanghonghui023
2010-08-19
楼主把架包共享依稀啊啊
import com.sinosoft.utility.StrTool;
import com.sinosoft.utility.DBConnPool;
我的邮箱:amama_110@yahoo.com.cn 多谢
import com.sinosoft.utility.StrTool;
import com.sinosoft.utility.DBConnPool;
我的邮箱:amama_110@yahoo.com.cn 多谢
相关推荐
在封装POI操作Excel的过程中,反射可能被用来动态地创建对象,调用方法,或访问私有成员,这使得代码更具灵活性和可扩展性。例如,可以使用反射动态地根据Excel工作表的列名创建对应的Java对象属性,或者在不知道...
以下是对"java中poi读写excel封装工具类"这一主题的详细解释。 1. **Apache POI介绍** Apache POI是一个开源项目,允许Java开发者创建、修改和显示Microsoft Office文件,包括Excel、Word和PowerPoint。它的核心...
在这个"POI读写excel(.xls/.xlsx)的Demo"中,我们将深入探讨如何使用Apache POI库在Java中读取和写入Excel文件。 1. **Apache POI库介绍** Apache POI 提供了 HSSF(Horrible Spreadsheet Format)和 XSSF(XML ...
为更方便的使用POI的API来操作Excel(2003)文件,对POI中针对Excel文件的读写进行了简单封装。此类中包含以下功能: 1.根据模板创建Excel文件 2.获取及更新Excel文件内容 3.创建、复制Sheet 4.设置Sheet名称 ... ...
3. **NPOI**: NPOI是一个针对Apache POI的.NET实现,支持读写Excel(XLS和XLSX)以及Word文档。它是跨平台的,可以在.NET Core上运行,适合服务器端应用。 对于"ExcelFunction.cs"这个文件,我们可以预期它可能包含...
一个java用POI读写Excel的类封装了一个读取Excel数据的方法和一个写入Excel数据的方法,写入的话可从数据库读取或自己写一个List...
封装POI操作Excel的过程通常包括以下几个步骤: 1. 引入依赖:在Java项目中,你需要添加Apache POI的依赖库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache.poi ...
Apache POI是开源项目,提供了一组API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件,包括Excel。在这个场景中,我们关注的是如何使用POI来创建一个通用的、可复用的类,以便于在不同项目中快速...
Apache POI 是一个开源项目,它提供了一组API用于读写Microsoft Office格式的文件,如Excel(XLS,XLSX),Word(DOC,DOCX)和PowerPoint(PPT,PPTX)。在Excel方面,POI提供了HSSF(旧的BIFF格式,用于.xls文件...
在这个场景下,标题提到的“C++读写excel类”可能是指一个已经封装好的库,方便开发者直接在C++项目中进行Excel文件的操作。描述中提到这个类经过了实际使用,效果良好,适用于使用VC(Visual C++)进行Excel操作,...
10. **数据流处理**:除了处理本地文件,工具类也可能支持从网络流或内存中读写Excel,便于在Web应用中处理Excel数据。 通过使用这样的"Excel POI 工具类",开发人员可以避免重复编写相同的代码,提高代码的可维护...
而当我们需要在这些程序中处理Excel文件时,通常会利用MFC的扩展来直接读写Excel数据。本教程将深入讲解如何使用MFC来实现这个功能。 首先,我们需要了解Microsoft Office的自动化接口,这是读写Excel的基础。...
总结来说,"spring mvc easyui-POI导出excel封装源码"项目是将Spring MVC的后端处理能力与EasyUI的前端展示效果以及POI的Excel处理功能相结合,实现了一个功能强大且界面美观的Excel数据导出功能。这个项目对于需要...
- 在Excel处理方面,POI 提供了 HSSF(Horrible Spreadsheet Format)和 XSSF(XML Spreadsheet Format)两个API,分别用于读写旧版的 `.xls` 文件和较新的 `.xlsx` 文件。 - POI 提供了 Sheet、Row、Cell 等类,...
为了解决这些问题,可以考虑使用第三方库,如`libxl`,`Apache POI`,或者`OpenXML SDK`,它们提供了更直接且跨平台的API来读写Excel文件。 总的来说,通过理解COM组件和Excel对象模型,开发者可以在VC++环境下编写...
1、POI_EXCEL包下分别有两个类,一个是读取excel内容,一个是想excel写入内容 2、cn.itcast包下的所有包,是为了实现从excel写入到数据库中,和从数据库写入到excel中 注意事项: 1、需要导入maven工程 2、使用...
Apache POI是一个开源项目,提供了读写Microsoft Office格式文件的能力,包括Excel。下面我们将详细探讨如何使用POI来解析这两种不同版本的Excel文件,并将其数据封装成对象。 首先,理解Excel的文件格式差异。...
以下将详细讲解如何通过MFC在VS2010中实现读写Excel文件的操作。 首先,我们需要了解基础的Excel文件格式。Excel文件通常以.xlsx或.xls为扩展名,它们是基于Open XML标准的。在MFC中,我们不会直接操作这些XML文件...
在IT行业中,Apache POI是一个广泛使用的库,主要用于处理Microsoft Office格式的文件,尤其是Excel文档。在本场景中,我们关注的...同时,还可以考虑将数据读写操作封装成服务或工具类,提高代码的复用性和可维护性。