ExcelOperate20200316.rar

  • 后知后觉的阿龙
    了解作者
  • Java
    开发工具
  • 18.9MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2020-03-16 23:26
    上传日期
java通过apache poi框架读取2007版Excel文件,Eclipse IDE,jdk-8u231-windows-x64调试通过,能正确读取和写出2007版Excel文件。
ExcelOperate20200316.rar
  • bin
  • com
  • reus
  • ExcelOperate$2.class
    1.8KB
  • ExcelOperate.class
    8KB
  • ExcelOperate$1.class
    1.2KB
  • .settings
  • org.eclipse.jdt.core.prefs
    598B
  • src
  • com
  • reus
  • ExcelOperate.java
    7.3KB
  • lib
  • jaxb-api-2.3.1.jar
    125.1KB
  • poi-ooxml-4.1.2.jar
    1.8MB
  • curvesapi-1.06.jar
    109.3KB
  • commons-codec-1.13.jar
    336.3KB
  • poi-examples-4.1.2.jar
    368.4KB
  • poi-4.1.2.jar
    2.8MB
  • commons-logging-1.2.jar
    60.4KB
  • log4j-1.2.17.jar
    478.4KB
  • xmlbeans-3.1.0.jar
    2.5MB
  • activation-1.1.1.jar
    67.8KB
  • commons-collections4-4.4.jar
    734.3KB
  • poi-excelant-4.1.2.jar
    30.6KB
  • jaxb-core-2.3.0.1.jar
    248.9KB
  • poi-ooxml-schemas-4.1.2.jar
    7.5MB
  • poi-scratchpad-4.1.2.jar
    1.7MB
  • commons-compress-1.19.jar
    600.6KB
  • commons-math3-3.6.1.jar
    2.1MB
  • junit-4.12.jar
    307.6KB
  • jaxb-impl-2.3.2.jar
    993.8KB
  • SparseBitSet-1.2.jar
    23.9KB
  • .project
    388B
  • in.xlsx
    13KB
  • out.xlsx
    3.4KB
  • .classpath
    1.5KB
内容介绍
package com.reus; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelOperate { public static void main(String[] args) { String[][] data = { { "中文", "$1275.00" }, { "Pets", "$125.00" }, { "Electronics", "$2533.00" }, { "Mensware", "$497.00" } }; String[] headers = { "Department", "Daily Revenue" }; JFrame frame = new JFrame("JTable to Excel Hack"); DefaultTableModel model = new DefaultTableModel(data, headers); final JTable table = new JTable(model); JScrollPane scroll = new JScrollPane(table); String outFullPath = "out.xlsx";//默认输出到工程本地目录下 JButton exportButton = new JButton("输出");//输出为Excel文件 exportButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { try { createExcel(model,outFullPath);//输出并创建Excel } catch (Exception ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } } }); JButton readButton = new JButton("读取");//读取Excel文件,在控制台窗口打印显示 readButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { try { SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS"); TimeZone t = sdf.getTimeZone(); t.setRawOffset(0); sdf.setTimeZone(t); Long startTime = System.currentTimeMillis();//用于计算从excel文件中读取数据耗时 String fileName = "in.xlsx"; readExcel(fileName);// 读取Excel,xlsx后缀名的文件 Long endTime = System.currentTimeMillis(); System.out.println("用时:" + sdf.format(new Date(endTime - startTime))); } catch (Exception ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } } }); JPanel bottomPanel=new JPanel(); bottomPanel.setLayout(new BorderLayout()); bottomPanel.add(exportButton, BorderLayout.NORTH); bottomPanel.add(readButton, BorderLayout.SOUTH); frame.getContentPane().add("Center", scroll); frame.getContentPane().add("South", bottomPanel); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } @SuppressWarnings({ "resource"}) public static void readExcel(String strPath) throws IOException { // 构造 XSSFWorkbook 对象,strPath 传入文件路径 XSSFWorkbook xwb = new XSSFWorkbook(strPath); // 读取第一个表格内容 XSSFSheet sheet = xwb.getSheetAt(0);//0表示第一个表格 // 定义 row、cell XSSFRow row; XSSFCell cell; // 循环输出表格中的内容 for (int i = sheet.getFirstRowNum(); i < sheet.getPhysicalNumberOfRows(); i++) { row = sheet.getRow(i); for (int j = row.getFirstCellNum(); j < row.getPhysicalNumberOfCells(); j++) { String ret = ""; cell=row.getCell(j); ret = getCellValueByCell(cell); System.out.print(ret + "\t"); } System.out.println(""); } } //获取单元格各类型值,返回字符串类型 private static String getCellValueByCell(Cell cell) { // 判断是否为null或空串 if (cell == null || cell.toString().trim().equals("")) { return ""; } String cellValue = ""; CellType cellType = cell.getCellType(); switch (cellType) { case NUMERIC:// 把枚举常量前的冗余类信息去掉编译即可通过 short format = cell.getCellStyle().getDataFormat(); if (DateUtil.isCellDateFormatted(cell)) {//注意:DateUtil.isCellDateFormatted()方法对“2019年1月18日"这种格式的日期,判断会出现问题,需要另行处理 SimpleDateFormat sdf = null; // System.out.println("cell.getCellStyle().getDataFormat()="+cell.getCellStyle().getDataFormat()); if (format == 20 || format == 32) { sdf = new SimpleDateFormat("HH:mm"); } else if (format == 14 || format == 31 || format == 57 || format == 58) { // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58) sdf = new SimpleDateFormat("yyyy-MM-dd"); double value = cell.getNumericCellValue(); Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value); cellValue = sdf.format(date); } else {// 日期 sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } try { cellValue = sdf.format(cell.getDateCellValue());// 日期 } catch (Exception e) { try { throw new Exception("exception on get date data !".concat(e.toString())); } catch (Exception e1) { e1.printStackTrace(); } } finally { sdf = null; } } else { BigDecimal bd = new BigDecimal(cell.getNumericCellValue()); cellValue = bd.toPlainString();// 数值 这种用BigDecimal包装再获取plainString,可以防止获取到科学计数值 } break; case STRING: // 字符串 cellValue = cell.getStringCellValue(); break; case BOOLEAN: // Boolean cellValue = cell.getBooleanCellValue() + ""; break; case FORMULA: // 公式 { // cellValue = cell.getCellFormula();//读取单元格中的公式 cellValue = String.valueOf(cell.getNumericCellValue());//读取单元格中的数值 } break; case BLANK: // 空值 cellValue = ""; break; case ERROR: // 故障 cellValue = "ERROR VALUE"; break; default: cellValue = "UNKNOW VALUE"; break; } return cellValue; } /** * 用户列表导出,生成Excel */ public static void createExcel(TableModel model, String outFileFullPath) { XSSFWorkbook userListExcel = createUserListExcel(model); try { // 输出成文件 FileOutputStream outputStream = new FileOutputStream(new File(outFileFullPath)); userListExcel.write(outputStream); outputStream.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 创建excel */ private static XSSFWorkbook createUserListExcel(TableModel model) { // 1.创建HSSFWorkbook,一个HSSFWorkbook对应一个Excel文件 XSSFWorkbook wb = new XSSFWorkbook(); // 2.在workbook中添加一个sheet,对应Excel文件中的sheet XSSFSheet sheet = wb.createSheet("sheet1"); // 3.设置表头,即每个列的列名 XSSFRow row = sheet.createRow(0);//创建第一行 for (int i = 0; i < model.getColumnCount(); i++) { row.createCell(i).setCellValue(model.getColumnName(i));// 给列写入数据,创建单元格,将列名写入 } // 写入正式数据 for (int i = 1; i <= model.getRowCount(); i++) {// 先行索引。由于第一行已经被表格的标题占据了,所以昌数据索引从1开始 row = sheet.createRow(i);//创建真正的行用于存放数据 for (int j = 0; j < model.getColumnCount(); j++) {// 后列索引 row.createCell(j).setCellValue(model.getValueAt(i-1, j).toString()); sheet.autoSizeColumn(1, true); } } return wb; } }
评论
    相关推荐
    • java 读写excel
      java 读写excel 对输入读取 打在后台上,写入也是做个简单的写入。用到的jar包都在测试项目中,欢迎大家下载使用
    • poi excel 读写 2007 springmvc
      poi excel 读写 2007 springmvc 实现
    • java读写xlsx文件
      java利用poi读写excel2010(xlsx)文件 环境:eclipse3.7.2,jre6,excel2010
    • stm32读写Flash
      这是一个利用stm32f103读写Flash的程序
    • java 读写压缩包
      这是我写的一个使用 java 读写压缩包的示例。
    • MFC读写excel2003、excel2007代码
      vs2008MFC读写excel2003、excel2007代码
    • C#实现的Excel 2007表格读写实例
      内容索引:C#源码,报表打印,读取Excel C#编程实现MS Excel 2007表格的读取与写入实例,读写xlsx格式的文件,功能顺利完成,不过有一处错误,不影响功能的实现。
    • java处理2003和2007Excel读写加密源码
      java处理2003和2007Excel读写加密源码,有需要的可以参考代码,根据自己需求改造
    • Word 2003/2007读写控件C#示例源代码
      SharpWord for .Net是一款功能强大,可自由读写编辑Microsoft Word 2003/2007文件类库,具有丰富的Word文档内容编辑及导入/导出功能。简单、方便、易用,可以大大提高工作效率。 ★编辑功能:等同于Word内容编辑功能...
    • VS2019 C# 读写Excel2007
      这是一个类库,可以对Excel 2007 进行读写操作. 开发环境 Visual Studio 2019. 需要安装ODTwithODAC1120320_32bit客户端组件. 可以在此...