博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java写入和写出EXCEL(含源代码)
阅读量:5154 次
发布时间:2019-06-13

本文共 11540 字,大约阅读时间需要 38 分钟。

这两天帮老师做一个数据库,将所有实验交易的数据导入到数据库中,但是不想天天在实验室里面待着,气氛太压抑,就想着先把数据读进EXCEL中,哪天带到实验室导进去

数据原来是这样的,不同的实验有一个专门的文件夹,实验名的文件夹下有不同班级的文件夹,班级文件夹下有该班级日期文件夹,存储的是不同时间下该班做实验的数据EXCEL,原来的EXCEL中没有班级和时间,现在需要通过读取EXCEL名以及班级名来将该信息作为一列,加入到EXCEL中。

下面是源代码,嘿嘿,顺便还做了一个可视化窗口。

类ExcelRead :

import java.awt.List;import java.io.ByteArrayOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;  import java.io.IOException;  import java.io.OutputStream;  import java.text.DecimalFormat;  import java.text.SimpleDateFormat;  import java.util.ArrayList;  import org.apache.poi.hssf.usermodel.HSSFCell;  import org.apache.poi.hssf.usermodel.HSSFDateUtil;  import org.apache.poi.hssf.usermodel.HSSFRow;  import org.apache.poi.hssf.usermodel.HSSFSheet;  import org.apache.poi.hssf.usermodel.HSSFWorkbook;  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 ExcelRead {      String path;    public String getPath() {        return path;    }    public void setPath(String path) {        this.path = path;    }    //默认单元格内容为数字时格式      private static DecimalFormat df = new DecimalFormat("0");      // 默认单元格格式化日期字符串       private static SimpleDateFormat sdf = new SimpleDateFormat(  "yyyy-MM-dd HH:mm:ss");       // 格式化数字      private static DecimalFormat nf = new DecimalFormat("0.00");      public static ArrayList
> readExcel(File file){ if(file == null){ return null; } if(file.getName().endsWith("xlsx")){ //处理ecxel2007 return readExcel2007(file); }else{ //处理ecxel2003 return readExcel2003(file); } } /* * @return 将返回结果存储在ArrayList内,存储结构与二位数组类似 * lists.get(0).get(0)表示过去Excel中0行0列单元格 */ public static ArrayList
> readExcel2003(File file){ try{ ArrayList
> rowList = new ArrayList
>(); ArrayList colList; HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file)); HSSFSheet sheet = wb.getSheetAt(0); HSSFRow row; HSSFCell cell; Object value; for(int i = sheet.getFirstRowNum() , rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows() ; i++ ){ row = sheet.getRow(i); colList = new ArrayList(); if(row == null){ //当读取行为空时 if(i != sheet.getPhysicalNumberOfRows()){ //判断是否是最后一行 rowList.add(colList); } continue; }else{ rowCount++; } for( int j = row.getFirstCellNum() ; j <= row.getLastCellNum() ;j++){ cell = row.getCell(j); if(cell == null || cell.getCellType() == HSSFCell.CELL_TYPE_BLANK){ //当该单元格为空 if(j != row.getLastCellNum()){ //判断是否是该行中最后一个单元格 colList.add(""); } continue; } switch(cell.getCellType()){ case XSSFCell.CELL_TYPE_STRING: //System.out.println(i + "行" + j + " 列 is String type"); value = cell.getStringCellValue(); break; case XSSFCell.CELL_TYPE_NUMERIC: if ("@".equals(cell.getCellStyle().getDataFormatString())) { value = df.format(cell.getNumericCellValue()); } else if ("General".equals(cell.getCellStyle() .getDataFormatString())) { value = nf.format(cell.getNumericCellValue()); } else { value = sdf.format(HSSFDateUtil.getJavaDate(cell .getNumericCellValue())); } // System.out.println(i + "行" + j // + " 列 is Number type ; DateFormt:" // + value.toString()); break; case XSSFCell.CELL_TYPE_BOOLEAN: //System.out.println(i + "行" + j + " 列 is Boolean type"); value = Boolean.valueOf(cell.getBooleanCellValue()); break; case XSSFCell.CELL_TYPE_BLANK: //System.out.println(i + "行" + j + " 列 is Blank type"); value = ""; break; default: //System.out.println(i + "行" + j + " 列 is default type"); value = cell.toString(); }// end switch colList.add(value); }//end for j rowList.add(colList); }//end for i return rowList; }catch(Exception e){ return null; } } public static ArrayList
> readExcel2007(File file){ try{ ArrayList
> rowList = new ArrayList
>(); ArrayList colList; XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(file)); XSSFSheet sheet = wb.getSheetAt(0); XSSFRow row; XSSFCell cell; Object value; for(int i = sheet.getFirstRowNum() , rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows() ; i++ ){ row = sheet.getRow(i); colList = new ArrayList(); if(row == null){ //当读取行为空时 if(i != sheet.getPhysicalNumberOfRows()){ //判断是否是最后一行 rowList.add(colList); } continue; }else{ rowCount++; } for( int j = row.getFirstCellNum() ; j <= row.getLastCellNum() ;j++){ cell = row.getCell(j); if(cell == null || cell.getCellType() == HSSFCell.CELL_TYPE_BLANK){ //当该单元格为空 if(j != row.getLastCellNum()){ //判断是否是该行中最后一个单元格 colList.add(""); } continue; } switch(cell.getCellType()){ case XSSFCell.CELL_TYPE_STRING: //System.out.println(i + "行" + j + " 列 is String type"); value = cell.getStringCellValue(); break; case XSSFCell.CELL_TYPE_NUMERIC: if ("@".equals(cell.getCellStyle().getDataFormatString())) { value = df.format(cell.getNumericCellValue()); } else if ("General".equals(cell.getCellStyle() .getDataFormatString())) { value = nf.format(cell.getNumericCellValue()); } else { value = sdf.format(HSSFDateUtil.getJavaDate(cell .getNumericCellValue())); } // System.out.println(i + "行" + j // + " 列 is Number type ; DateFormt:" // + value.toString()); break; case XSSFCell.CELL_TYPE_BOOLEAN: //System.out.println(i + "行" + j + " 列 is Boolean type"); value = Boolean.valueOf(cell.getBooleanCellValue()); break; case XSSFCell.CELL_TYPE_BLANK: //System.out.println(i + "行" + j + " 列 is Blank type"); value = ""; break; default: //System.out.println(i + "行" + j + " 列 is default type"); value = cell.toString(); }// end switch colList.add(value); }//end for j rowList.add(colList); }//end for i return rowList; }catch(Exception e){ System.out.println("exception"); return null; } } public static ArrayList getFiles(String filePath){ File root = new File(filePath); File[]files = root.listFiles(); ArrayList filelist = new ArrayList(); for(File file:files){ if(file.isDirectory()){ filelist.addAll(getFiles(file.getAbsolutePath())); }else{ String newpath = file.getAbsolutePath(); if(newpath.contains("交易记录")){ filelist.add(newpath); } } } return filelist; } public void readBook(String path3) { String filePath = path3; ArrayList filelist = getFiles(filePath); ArrayList
resultAll = new ArrayList
(); for(int i = 0;i
result = Graph(path); String[] path2 = path.split("\\\\"); int num = result.get(0).size(); ArrayList result2 = new ArrayList(); for(int j = 0;j
result,String path){ if(result == null){ return; } HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("sheet1"); for(int i = 0 ;i < result.get(0).size() ; i++){ HSSFRow row = sheet.createRow(i); for(int j = 0; j < result.size() ; j ++){ HSSFCell cell = row.createCell((short)j); cell.setCellValue(result.get(j).get(i).toString()); } } ByteArrayOutputStream os = new ByteArrayOutputStream(); try { wb.write(os); } catch (IOException e){ e.printStackTrace(); } byte[] content = os.toByteArray(); File file = new File(path);//Excel文件生成后存储的位置。 OutputStream fos = null; try { fos = new FileOutputStream(file); wb.write(fos); os.close(); fos.close(); }catch (Exception e){ e.printStackTrace(); } } public static DecimalFormat getDf() { return df; } public static void setDf(DecimalFormat df) { ExcelRead.df = df; } public static SimpleDateFormat getSdf() { return sdf; } public static void setSdf(SimpleDateFormat sdf) { ExcelRead.sdf = sdf; } public static DecimalFormat getNf() { return nf; } public static void setNf(DecimalFormat nf) { ExcelRead.nf = nf; } public static ArrayList
Graph(String path){ File file = new File(path); ArrayList
> result = ExcelRead.readExcel(file); ArrayList
price = new ArrayList
();//价格序列 ArrayList
time = new ArrayList
();//时间序列 ArrayList
buyList = new ArrayList
();//买方序列 ArrayList
sellList = new ArrayList
();//卖方序列 ArrayList
vol = new ArrayList
();//成交量 ArrayList
Share = new ArrayList
();//股票名字 ArrayList
id = new ArrayList
(); ArrayList
Shareid = new ArrayList
(); for(int i = 2 ;i < result.size() ;i++){ for(int j = 0;j
resultList = new ArrayList
(); resultList.add(Shareid); resultList.add(id); resultList.add(buyList); resultList.add(sellList); resultList.add(Share); resultList.add(price); resultList.add(vol); resultList.add(time); return resultList; }}

类readExcelBook(做可视化窗口的):

import java.awt.EventQueue;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.GroupLayout;import javax.swing.JLabel;import javax.swing.GroupLayout.Alignment;import javax.swing.JButton;import javax.swing.JTextField;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.io.File;public class readExcelBook {    private JFrame frame;    private JTextField textField;    /**     * Launch the application.     */    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            public void run() {                try {                    readExcelBook window = new readExcelBook();                    window.frame.setVisible(true);                } catch (Exception e) {                    e.printStackTrace();                }            }        });    }    /**     * Create the application.     */    public readExcelBook() {        initialize();    }    /**     * Initialize the contents of the frame.     */    private void initialize() {        frame = new JFrame();        frame.setBounds(100, 100, 450, 300);        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                JButton button = new JButton("\u9009\u62E9\u6587\u4EF6");        button.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                JFileChooser jfc=new JFileChooser();                  jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );                  jfc.showDialog(new JLabel(), "选择");                  File file=jfc.getSelectedFile();                String path = file.getAbsolutePath();                textField.setText(path);                ExcelRead er = new ExcelRead();                er.readBook(path);            }        });                textField = new JTextField();        textField.setColumns(10);                JLabel lbldaxls = new JLabel("\u5199\u5165\u4E86D\u76D8\u4E0B\u7684a.xls\u54C8");        GroupLayout groupLayout = new GroupLayout(frame.getContentPane());        groupLayout.setHorizontalGroup(            groupLayout.createParallelGroup(Alignment.LEADING)                .addGroup(groupLayout.createSequentialGroup()                    .addGap(26)                    .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)                        .addComponent(lbldaxls)                        .addComponent(textField, GroupLayout.PREFERRED_SIZE, 295, GroupLayout.PREFERRED_SIZE)                        .addComponent(button))                    .addContainerGap(113, Short.MAX_VALUE))        );        groupLayout.setVerticalGroup(            groupLayout.createParallelGroup(Alignment.LEADING)                .addGroup(groupLayout.createSequentialGroup()                    .addGap(31)                    .addComponent(button)                    .addGap(18)                    .addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)                    .addGap(35)                    .addComponent(lbldaxls)                    .addContainerGap(119, Short.MAX_VALUE))        );        frame.getContentPane().setLayout(groupLayout);    }}

转载于:https://www.cnblogs.com/yunerlalala/p/6249947.html

你可能感兴趣的文章
Build tool
查看>>
php 小坑记录
查看>>
2018.7.28 二叉树的遍历规则(前序遍历、后序遍历、中序遍历)
查看>>
通过 poi 导入 Excel代码
查看>>
《CSS基础教程》 读书笔记三
查看>>
洛谷P4482 [BJWC2018]Border 的四种求法 字符串,SAM,线段树合并,线段树,树链剖分,DSU on Tree...
查看>>
PHP安全新闻早8点_1127
查看>>
57.Insert Interval
查看>>
PHP 五大运行模式
查看>>
CSS选项卡
查看>>
HDOJ1203 I NEED A OFFER!
查看>>
ZH奶酪:自然语言处理工具LTP语言云调用方法
查看>>
.NET中将图片文件流转成Base64字符串的实现
查看>>
js如何操作或是更改sass里的变量
查看>>
BZOJ1419: Red is good
查看>>
腾讯云-搭建 JAVA 开发环境
查看>>
POJ 3308 Paratroopers (对数转换+最小点权覆盖)
查看>>
rendering omni shadow in one pass.
查看>>
No repository found containing,eclipse 自动更新erro 解决
查看>>
iOS设计模式之单例模式
查看>>