这两天帮老师做一个数据库,将所有实验交易的数据导入到数据库中,但是不想天天在实验室里面待着,气氛太压抑,就想着先把数据读进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 ArrayListreadExcel(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 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 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 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 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); } }
运行结果:
总结
以上就是本文关于Java写入写出Excel操作源码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站Java相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!