Java读写Excel文件DEMO

下载一定格式的Excel文件:

  @RequestMapping("/xxxx/xxxx/xxxx/copyfiledownload")
    @ResponseBody
    public void copyfiledownload(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception{
        response.setContentType("text/html; charset=GBK");
        String basePath = request.getSession().getServletContext().getRealPath("/");
        File file = new File(basePath + "xxxx.xls");
        FileOutputStream fos=new FileOutputStream(file);
        HSSFWorkbook wb=new HSSFWorkbook();
        HSSFSheet sheet=wb.createSheet();
        wb.setSheetName(0, "sheet0");
        HSSFRow row=null;
        HSSFCell cell=null;
        row=sheet.createRow(0);
        cell=row.createCell(0);
        cell.setCellValue("xxID");
        cell=row.createCell(1);
        cell.setCellValue("每ID的总限量");
        cell=row.createCell(2);
        cell.setCellValue("每用户对此ID最大购买量");
        cell=row.createCell(3);
        cell.setCellValue("xx售卖价格");

        cell=row.createCell(4);
        cell.setCellValue("S时间");
        cell=row.createCell(5);
        cell.setCellValue("X时间");

        CellStyle cellStyle = wb.createCellStyle();
        CreationHelper helperDate = wb.getCreationHelper();
        cellStyle.setDataFormat(helperDate.createDataFormat().getFormat("yy/mm/dd/ hh:mm:ss"));
        HSSFRow rowD=null;
        HSSFCell cellD=null;
        for (int i = 1; i < 1000; i++) {
            rowD=sheet.createRow(i);
            cellD=rowD.createCell(4);
            cellD.setCellStyle(cellStyle);
            cellD=rowD.createCell(5);
            cellD.setCellStyle(cellStyle);
        } // 设置时间格式

        cell=row.createCell(6);
        cell.setCellValue("xx平台");
        //CellRangeAddressList(firstRow, lastRow, firstCol, lastCol)设置行列范围
        CellRangeAddressList addressList = new CellRangeAddressList(1, 1000, 6, 6);
        String[] pos = {"PC","WAP","APP","PC+WAP","PC+APP","WAP+APP","PC+WAP+APP"};
        DataValidationHelper helper = sheet.getDataValidationHelper();
        DataValidationConstraint constraint = helper.createExplicitListConstraint(pos);
        DataValidation dataValidation = helper.createValidation(constraint, addressList);
        if(dataValidation instanceof XSSFDataValidation) {
            dataValidation.setSuppressDropDownArrow(true);
            dataValidation.setShowErrorBox(true);
        }else {
            dataValidation.setSuppressDropDownArrow(false);
        }
        sheet.addValidationData(dataValidation);
        wb.write(fos);
        fos.close();
        response.setContentType("application/x-msdownload");
        response.setContentLength((int) file.length());
        response.setHeader("Content-Disposition", "attachment;filename=" + new String(file.getName().getBytes("gbk"), "iso-8859-1"));
        FileInputStream fis = new FileInputStream(file);
        BufferedInputStream buff = new BufferedInputStream(fis);
        byte[] b = new byte[1024];
        long k = 0;
        OutputStream myout = response.getOutputStream();
        while (k < file.length()) {
            int j = buff.read(b, 0, 1024);
            k += j;
            myout.write(b, 0, j);
        }
        myout.flush();
        buff.close();
        fis.close();
        myout.close();
        file.delete();
    }

Excel文件读取:

   /**
     * 读取excel表头
     *
     * @param file
     * @return
     * @throws IOException
     */
    @SuppressWarnings("unused")
    private String[] readExcelHead(File file) throws IOException {
        HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file));
        HSSFSheet sheet = wb.getSheetAt(0);
        HSSFRow row = null;
        HSSFCell cell = null;
        row = sheet.getRow(0);
        String[] buff = new String[row.getLastCellNum()];
        for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) {
            cell = row.getCell(i);
            buff[i] = cell.getStringCellValue();
        }
        return buff;
    }
   /**
     * 读取2003excel
     *
     * @param file
     * @return
     */
    private List<List<Object>> read2003Excel(File file) throws IOException {
        List<List<Object>> dataList = new ArrayList<List<Object>>();
        HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file));
        HSSFSheet sheet = wb.getSheetAt(0);
        HSSFRow row = null;
        HSSFCell cell = null;
        Object val = null;
        DecimalFormat df = new DecimalFormat("0");// 格式化数字
        DecimalFormat df2 = new DecimalFormat("#0.00");// 格式化小数
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
        for (int i = sheet.getFirstRowNum() + 1; i < sheet.getPhysicalNumberOfRows(); i++) {
            row = sheet.getRow(i);
            if (row == null) {
                continue;
            }
            List<Object> objList = new ArrayList<Object>();
            for (int j = row.getFirstCellNum(); j < row.getLastCellNum(); j++) {
                cell = row.getCell(j);
                if (cell == null) {
                    val = null;
                    objList.add(val);
                    continue;
                }
                switch (cell.getCellType()) {
                case HSSFCell.CELL_TYPE_STRING:
                    val = cell.getStringCellValue();
                    break;
                case HSSFCell.CELL_TYPE_NUMERIC:
                    if ("@".equals(cell.getCellStyle().getDataFormatString())) {
                        if (j == 3) {
                            val = df2.format(cell.getNumericCellValue());
                        } else {
                            val = df.format(cell.getNumericCellValue());
                        }
                    } else if ("General".equals(cell.getCellStyle().getDataFormatString())) {
                        if (j == 3) {
                            val = df2.format(cell.getNumericCellValue());
                        } else {
                            val = df.format(cell.getNumericCellValue());
                        }
                    } else {
                        val = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
                    }
                    break;
                case HSSFCell.CELL_TYPE_BOOLEAN:
                    val = cell.getBooleanCellValue();
                    break;
                case HSSFCell.CELL_TYPE_BLANK:
                    val = "";
                    break;
                default:
                    val = cell.toString();
                    break;
                }
                objList.add(val);
            }
            dataList.add(objList);
        }
        return dataList;
    }
   /**
     * 读取2007excel
     *
     * @param file
     * @return
     */

    private List<List<Object>> read2007Excel(File file) throws IOException {
        List<List<Object>> dataList = new ArrayList<List<Object>>();
        XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));
        XSSFSheet sheet = xwb.getSheetAt(0);
        XSSFRow row = null;
        XSSFCell cell = null;
        Object val = null;
        DecimalFormat df = new DecimalFormat("0");// 格式化数字
        DecimalFormat df2 = new DecimalFormat("#0.00");// 格式化小数
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
        for (int i = sheet.getFirstRowNum() + 1; i < sheet.getPhysicalNumberOfRows(); i++) {
            row = sheet.getRow(i);
            if (row == null) {
                continue;
            }
            List<Object> objList = new ArrayList<Object>();
            for (int j = row.getFirstCellNum(); j < row.getLastCellNum(); j++) {
                cell = row.getCell(j);
                if (cell == null) {
                    val = null;
                    objList.add(val);
                    continue;
                }
                switch (cell.getCellType()) {
                case XSSFCell.CELL_TYPE_STRING:
                    val = cell.getStringCellValue();
                    break;
                case XSSFCell.CELL_TYPE_NUMERIC:
                    if ("@".equals(cell.getCellStyle().getDataFormatString())) {
                        if (j == 3) {
                            val = df2.format(cell.getNumericCellValue());
                        } else {
                            val = df.format(cell.getNumericCellValue());
                        }
                    } else if ("General".equals(cell.getCellStyle().getDataFormatString())) {
                        if (j == 3) {
                            val = df2.format(cell.getNumericCellValue());
                        } else {
                            val = df.format(cell.getNumericCellValue());
                        }
                    } else {
                        val = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
                    }
                    break;
                case XSSFCell.CELL_TYPE_BOOLEAN:
                    val = cell.getBooleanCellValue();
                    break;
                case XSSFCell.CELL_TYPE_BLANK:
                    val = "";
                    break;
                default:
                    val = cell.toString();
                    break;
                }
                objList.add(val);
            }
            dataList.add(objList);
        }
        return dataList;
    }
时间: 2024-11-13 06:55:46

Java读写Excel文件DEMO的相关文章

java读写excel文件

需求:利用Java读写excel文件 利用jexcelapi实现Java读写excel文件的功能 首先下载并安装jexcelapi JExcelApi v2.6.12 (1911kbytes) 解压后把jxl.jar文件添加到Java Build Path中 Java读取excel文件 Java写入excel文件

Java读写Excel文件中数据的简便方法

Java开发项目中经常会碰到处理Excel文件中数据的情况,这里通过一个例子来看一下实现方法:从Excel文件orders.xls中读取订单信息,从中找出2010年1月1日(含)之后,并且SELLERID等于18的订单.找到的数据写入order_result.xls文件. Excel文件orders.xls的内容如下: ORDERID CLIENT SELLERID AMOUNT ORDERDATE 1 UJRNP 17 392 2008/11/2 15:28 2 SJCH 6 4802 200

JExcel入门,JAVA读写Excel文件

(本人下的是jexcelapi_2_6_12.tar.gz,解压后将里面的jxl.jar复制到WEB-INF/lib目录下面即可) Java Excel API的jar包可以通过以下URL获得:(推荐) http://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.6/jexcelapi_2_6_6.zip/download (包括所有版本):http://sourceforge.net/projects/jexcelapi/file

Java操作Excel之POI:java读写excel文件以及打印设置

开发步骤: * 1.创建一个工作簿 * 2.创建一个工作表 * 3.创建一个行对象 * 4.创建一个单元格对象,指定它的列 * 5.给单元格设置内容 * 6.样式进行修饰(跳过) * 7.保存,写文件 * 8.关闭对象 public void testHSSF_base() throws IOException{ Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet(); Row nRow = sheet.createRow

Java读写Excel文件示例

在Linux中,按键.触摸屏.鼠标等等输入设备都可以依靠输入子系统提供的接口函数来实现他们的设备驱动,在输入子系统中,系统已经完成了这些输入设备的共性,所以根据子系统提供的接口,只需要完成各自的独特性即可完成一个输入设备的设备驱动. Linux中,输入子系统由设备驱动层.核心层.事件处理层这三层组成.设备驱动层讲底层输入设备的响应转化为标准的输入事件,事件处理层就为应用程序提供统一的设备访问接口来跟底层交互数据,核心层则是连接驱动层和事件处理层的桥梁. 在输入子系统中重要的结构体就是input_

xls2- 用Python读写Excel文件-乘法口诀

xls2- 用Python读写Excel文件 https://gitee.com/pandarrr/Panda.SimpleExcel https://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html 一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 二.使用介绍 1.导入模块 import xlrd 2.打开Excel文件读取数据

MFC vs2012 Office2013 读写excel文件

近期在忙一个小项目(和同学一起搞的),在这里客户要求不但读写txt,而且可以读写excel文件,这里本以为很简单,结果...废话少说,过程如下: 笔者环境:win7 64+VS2012+Office2013+MFC. 说明:读写excel文件,通常包括1.ODBC数据库实现;2.通过解析Excel表格文件;3.通过OLE/COM的几种实现方法.本文主要研究通过OLE/COM实现对Excel表格的操作. 步骤: 1.新建MFC对话框.注意勾选自动化,否则后面加入不了需要的库,导致启动服务失败等错误

使用phpexcel类读写excel文件

使用原生php读写excel文件的博文地址: 基于使用原生php读写excel文件的不靠谱,本文将简单介绍如何使用第三方类库phpexcel来读写excel文件. 首先,需要到githut下载phpexcel类库.下载地址:https://github.com/PHPOffice/PHPExcel.

Java编程:使用Java读取Excel文件内容

微软的ODBC驱动程序把工作表中的第一行作为列名(译者注:即字段名),工作表名作为数据库表名. 要通过JDBC访问工作表,我们还必须创建一个新的ODBC数据源,在Windows 2000系统上创建数据源的过程如下: 进入“控制面板” --> “管理工具” --> “数据源(ODBC)”,(译者注:打开后选择系统DSN),点击添加,在弹出窗口中选择“Driver do Microsoft Excel(*.xls)” 然后在数据源名处输入一个名字myexcel(译者注:相当于数据库名),然后点击“