Swing表格数据转xls文档

花了一下午的时间终于实现了Swing表格数据转xls文档与读取xls文档数据。

接下来上代码

1.弹出文件,目录选择框

exportBtn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String name = "数据.xls";
                String defaultPath = "D://temp";
              //构造文件保存对话框
                JFileChooser chooser = new JFileChooser();
                chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
                chooser.setDialogType(JFileChooser.SAVE_DIALOG);
                chooser.setMultiSelectionEnabled(false);
                chooser.setAcceptAllFileFilterUsed(false);
                chooser.setDialogTitle("保存数据文件");

                //设置默认路径
                File defaultFile = new File(defaultPath+"//data");
                if(!defaultFile.exists()){
                    defaultFile.mkdirs();
                }
                chooser.setCurrentDirectory(new File(defaultPath));
                //打开对话框
                int result = chooser.showSaveDialog(getWindow());//null

                //文件确定
                if(result==JFileChooser.APPROVE_OPTION) {
                    String outPath = chooser.getSelectedFile().getAbsolutePath();
                    File f = new File(outPath);
                    if(f.isDirectory()) {
                        outPath = outPath+"\\"+name;
                    }
                    if(new File(outPath).exists()){
                        int b = DialogUtils.showYesNoOptionDialog(getWindow(), "文件已经存在,是否要覆盖该文件?","操作确认");
                        if(b!=0){
                            return;
                        }
                    }

                    File file = new File(outPath);
                    ExcelExporter ee = new ExcelExporter();
                    try {
                        ee.exportTable(xTable, file);
                    } catch (IOException e1) {
                        new RuntimeException(e1);
                    }
                }
            }

        });

2.表格数据导出

package net.doublecom.sdk.tool.wirelessinfo.view;

import java.io.*;
import org.freeabc.client.core.component.table.XTable;

public class ExcelExporter  {
    public ExcelExporter() { }  

    public void exportTable(XTable<?> xtable, File file) throws IOException {  //Xtable自定义组件,也可换成Jtable     // TableModel tableModel = new JTable().getModel();     // tableModel.getColumnCount()
        FileWriter out = new FileWriter(file);  

        for(int i=0; i < xtable.getColumnCount(); i++) {
            if("名称.equals(xtable.getColumnName(i))||"年龄".equals(xtable.getColumnName(i)))
            out.write(xtable.getColumnName(i) + "\t");
        }
        out.write("\n");
        for(int i=0; i< xtable.getRowCount(); i++) {
            for(int j=0; j < xtable.getColumnCount(); j++) {
                if("名称".equals(xtable.getColumnName(j))||"年龄".equals(xtable.getColumnName(j)))
                    out.write(xtable.getValueAt(i,j).toString()+"\t");
            }
            out.write("\n");
        }
        out.close();
        System.out.println("write out to: " + file);
    }  

} 

3.读取xls文档数据

    importBtn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                String defaultPath = "D://temp//data//";
              //构造文件保存对话框
                JFileChooser chooser = new JFileChooser();
                chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
                chooser.setDialogType(JFileChooser.SAVE_DIALOG);
                chooser.setMultiSelectionEnabled(false);
                chooser.setAcceptAllFileFilterUsed(false);
                chooser.setDialogTitle("加载数据文件");

                //设置默认路径
                File defaultFile = new File(defaultPath);
                if(defaultFile.exists()){
                    chooser.setCurrentDirectory(new File(defaultPath));
                }
                //取得文件名输入框设置指定格式
                chooser.addChoosableFileFilter(new FileFilter() {
                    @Override
                    public String getDescription() {
                        return "Excel文件(*.xls)";
                    }
                    @Override
                    public boolean accept(File f) {
                        if (f.getName().endsWith("xls") || f.isDirectory()) {
                             return true;
                        }else{
                            return false;
                        }
                    }
                });
                //打开对话框
                int result = chooser.showSaveDialog(getWindow());//null
                //文件确定
                if(result==JFileChooser.APPROVE_OPTION) {
                    String outPath = chooser.getSelectedFile().getAbsolutePath();
                    File file = new File(outPath);
                    try {
                         StringBuffer sb = new StringBuffer();
                         List<String[]> dataArrs = new ArrayList<String[]>();
                         FileInputStream fis = new FileInputStream(file);
                         //InputStream is = fis.getInputStream();
                         BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"gb2312"));
                         reader.readLine();//第一行信息,为标题信息,不用,如果需要,注释掉
                         String line = null;
                         while((line=reader.readLine())!=null){
                            String item[] = line.split("\\t");//xls格式文件为空格分隔符文件,这里根据逗号切分
                            if(item.length!=2)
                            continue;
                            dataArrs.add(item);
                         }
                         for(String[] data:dataArrs) {
                             if(data.length>=2) {
                                 sb.append("name="+data[0]);
                                 sb.append(" age="+data[1]+";");
                             }
                         }

                    reader.close();
                    } catch (IOException e1) {
                        new RuntimeException(e1);
                    }
                }
            }
        });

原文地址:https://www.cnblogs.com/free-discipline/p/11605841.html

时间: 2024-10-10 18:47:42

Swing表格数据转xls文档的相关文章

C# 在根据窗体中的表格数据生成word文档时出错

出错内容为:   有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾. ************** 异常文本 ************** System.BadImageFormatException: 未能加载文件或程序集“Interop.Word, Version=8.1.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项.试图加载格式不正确的程序. 文件名:“Interop.Word, Version=8.1.0.

怎样可以把excel表格转换成word文档

在处理一些文档时,有时会遇到需要将excel表格内容全部放到word文档中,通常只是需要excel的部分数据内容时,直接通过复制,然后粘贴到word文档中即可,但是如果需要将excel表格所以内容都转换成word,那么复制操作就比较麻烦了,那么怎样可以快速将excel表格转换成word文档呢? 通过文档的转换工具,可以将excel格式直接转为word文档,而且是将excel工作簿中的所有表格同时进行转换. 首先在转换器中选择文件转word的转换类型,通过这个选项可以把我们常见的excel,ppt

DBImport v3.3 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

前言: 好久没写文了, 距离上一篇文章是3个月前的事了,虽然工作很忙,主要还是缺少写作的内容和激情,所以没怎么动手. 之前有一个来月不断面试不同层次来应聘的人员,很有想写文的冲动,后来还是忍住了. 估计写了也是那种说人坏话.恨铁不成钢的情绪文,没啥营养,所以情绪过了就没想写了. 在公司除了管理上的事情之外,另外也研发了一套适用信息系统的快速开发框架,这个有机会再写写文和大伙分享了. 下面言归正文了. 背景: 关于这个DBImport工具,发布的版本不多,仅有:V1.0.V2.0.V3.0.V3.

SpringMVC 下载XLS文档的设置

页面设置参考上文.SpringMVC 下载文本文档的设置 此文是关于xls文档下载的,这个文档使用Apache的POI生成,需要的jar包可以从下面地址下载: http://pan.baidu.com/s/1i3IJttF 下面是controller代码,比上一篇文本的少很多: @RequestMapping("/downloadAnnotatorListXls") public ModelAndView downloadAnnotatorListXls(HttpServletRequ

scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类

scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import numpy as np from sklearn.pipeline import Pipeline from sklearn.linear_model import SGDClassifier from sklearn.grid_search import GridSearchCV from sk

DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语.考驾照.到健身房请私教,远离了一下代码的世界,现在又回归了. 最近上班了,新的公司需要招.NET系.产品经理,有兴趣的可以左侧扣我(我部门要人,地点广州). 另外:阿里最近收购了一家公司,也需要Java系的高手和测试人员,有兴起的也可以扣我(我朋友的部门要人,地点广州). 嗯,闲话少说,看看工具的

C#简单实现动态数据生成Word文档并保存

今天正好有人问我,怎么生成一个报表式的Word文档. 就是文字的样式和位置相对固定不变,只是里面的内容从数据中读取. 我觉得类似这种的一般用第三方报表来做比较简便.但既然要求了Word,只好硬着头皮来. 网上的方法大多数都是从一个GridView或表中获得数据后向Word中添加一个表格. (图1) 我们使用Word模板来实现,方法如下: 1.首先需要向工程中的“引用”加入Word类库的引用(图2).我是Office 2003.其他版本可能略有不同.在COM里面 (图2) 2.用Word设计一个模

动态数据生成Word文档

最近做项目,让做一个将页面上的数据按照固定的格式保存到一个Word中,记得当初在考试系统的时候,我们的那个系统也实现了这个功能,那个时候知识觉得,哇喔,好神奇啊,那个一个杂乱无章的页面,都可以让他显示的很有层次,如果像Excel中那个,行是行,列是列的,还好控制一点.好难,他们好牛! 可以今天轮到自己做这个东西了,哎,这个后悔,当初多问一句,为什么,这个是怎么做的,稍微说一句,今天好赖看看不就可以了.出来混早晚是要还的!弄的今天做的时候,都不知道如何查资料.最后只能从"Word"查起.

xls文档上传解析

private File xls;    public void setXls(File xls) {        this.xls = xls;    }    @Action("AreaAction_upload")    public String upload() throws Exception {                List<Area> list=new ArrayList<>();        //创建解析xls工具类