zoukankan      html  css  js  c++  java
  • 《程序实现》从xml、txt文件里读取数据写入excel表格

    直接上码

    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableFont;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import java.util.regex.*;
    
    import javax.swing.JFileChooser;
    
    
    public class main {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            int a=0;
            int b=0;
            int countTemp=0;
            int row=1;
            String temp=null;
            try {
                WritableWorkbook wwb = null;    
                    //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象    
                wwb = Workbook.createWorkbook(new File("C:/Users/Administrator/Desktop/result.xls"));
                WritableSheet ws = wwb.createSheet("Sheet 1", 0);
                String th[] = { "弹幕ID", "用户ID", "弹幕发送时间", "字体颜色", "字号", "弹幕类型", "弹幕字数" };
                WritableFont contentFont = new WritableFont(WritableFont.createFont("楷体 _GB2312"), 12, WritableFont.NO_BOLD);
                WritableCellFormat contentFormat = new WritableCellFormat(contentFont);
                for (int i = 0; i < 7; i++) {
                    ws.addCell(new Label(i, 0, th[i], contentFormat));
                }
                
                
                JFileChooser jfc1=new JFileChooser("d:/");
                jfc1.showOpenDialog(null);
                File sf1=jfc1.getSelectedFile();
                String readFile=sf1.getAbsolutePath();
                //String readFile="C:/Users/Administrator/Desktop/first.xml";
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(readFile)));
                while((temp=br.readLine())!=null){
                    a=0;
                    b=0;
                    countTemp=0;
                    String temp1=null;
                    String[] th1=new String[6];
                    //System.out.println(temp);
                    String regEx = "\<d.*\<\/d\>";
                    Pattern pat = Pattern.compile(regEx);
                    Matcher mat = pat.matcher(temp);
                    if(mat.find()){
                        temp1=mat.group();
                        //System.out.println(temp1);
                    }else{
                        continue;
                    }
                    //计算用户ID
                    for(int i=0;i<temp1.length();i++){
                        if(temp1.charAt(i)==','){
                            countTemp++;
                        }
                        if(countTemp==6 && a==0){
                            a=i;
                        }
                        if(countTemp==7){
                            b=i;
                            break;
                        }
                    }
                    //System.out.println(a);
                    //System.out.println(b);
                    th1[0]=temp1.substring(a+1, b);
                    //计算弹幕发送时间
                    for(int i=0;i<temp1.length();i++){
                        if(temp1.charAt(i)=='"'){
                            a=i;
                        }
                        if(temp1.charAt(i)==','){
                            b=i;
                            break;
                        }
                    }
                    th1[1]=temp1.substring(a+1, b);
                    //计算字体颜色
                    a=0;
                    b=0;
                    countTemp=0;
                    for(int i=0;i<temp1.length();i++){
                        if(temp1.charAt(i)==','){
                            countTemp++;
                        }
                        if(countTemp==3 && a==0){
                            a=i;
                        }
                        if(countTemp==4){
                            b=i;
                            break;
                        }
                    }
                    th1[2]=temp1.substring(a+1, b);
                    //计算字号
                    a=0;
                    b=0;
                    countTemp=0;
                    for(int i=0;i<temp1.length();i++){
                        if(temp1.charAt(i)==','){
                            countTemp++;
                        }
                        if(countTemp==2 && a==0){
                            a=i;
                        }
                        if(countTemp==3){
                            b=i;
                            break;
                        }
                    }
                    if(Integer.parseInt(temp1.substring(a+1, b))==12){
                        th1[3]="非常小";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==16){
                        th1[3]="特小";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==18){
                        th1[3]="";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==25){
                        th1[3]="";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==36){
                        th1[3]="";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==45){
                        th1[3]="很大";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==64){
                        th1[3]="特别大";
                    }
                    //计算弹幕类型
                    a=0;
                    b=0;
                    countTemp=0;
                    for(int i=0;i<temp1.length();i++){
                        if(temp1.charAt(i)==','){
                            countTemp++;
                        }
                        if(countTemp==1 && a==0){
                            a=i;
                        }
                        if(countTemp==2){
                            b=i;
                            break;
                        }
                    }
                    if(Integer.parseInt(temp1.substring(a+1, b))==1||Integer.parseInt(temp1.substring(a+1, b))==2||Integer.parseInt(temp1.substring(a+1, b))==3){
                        th1[4]="滚动弹幕";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==4){
                        th1[4]="底端弹幕";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==5){
                        th1[4]="顶端弹幕";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==6){
                        th1[4]="逆向弹幕";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==7){
                        th1[4]="精准定位";
                    }else if(Integer.parseInt(temp1.substring(a+1, b))==8){
                        th1[4]="高级弹幕";
                    }
                    //计算弹幕字数
                    for(int i=1;i<temp1.length();i++){
                        if(temp1.charAt(i)=='>'){
                            a=i;
                        }
                        if(temp1.charAt(i)=='<'){
                            b=i;
                            break;
                        }
                    }
                    //System.out.println(a);
                    //System.out.println(b);
                    th1[5]=String.valueOf((b-a)/2+1);//字数存在问题
                    
                    
                    
                    ws.addCell(new Label(0, row, new Integer(row).toString(), contentFormat));
                     for (int i = 0; i < 6; i++) {
                         ws.addCell(new Label(i+1, row, th1[i], contentFormat));
                     }
                    row++;
                }
                wwb.write();
                wwb.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }

    使用javax.swing.JFileChooser出现访问限制错误,

    Access restriction: The type JFileChooser is not accessible due to restriction on required library

    解决办法:Project->Properties->Java Compiler->Errors/Warnings->Deprecated and restricted API->Forbidden reference改为warning,这样便可以用了。

    程序的功能就是选择文件进行读取数据,将有效数据写入excel里,省去了要花费大量时间的人工输入。

  • 相关阅读:
    [SUCTF 2019]EasySQL
    [强网杯 2019]随便注
    [HCTF 2018]WarmUp
    Linux下配置JDK环境
    Centos克隆虚拟机后配置网络
    Sublime安装插件
    LeetCode-91-解码方法
    LeetCode-322-零钱兑换
    LeetCode-152-乘积最大子数组
    LeetCode-139-单词拆分
  • 原文地址:https://www.cnblogs.com/qiuhaojie/p/5835535.html
Copyright © 2011-2022 走看看