一个用JAVA解析Excel的程序举例

实体类

public class ali {

    private String FSTR_SCATSID;
    private String FSTR_DESC;
    private String FSTR_DATE;
    private String NUM_TIME;
    private String MIN_TIME;
    private String NUMOF_ALARMS;
    private String UTIM;
                    public String getFSTR_SCATSID() {
                        return FSTR_SCATSID;
                    }
                    public void setFSTR_SCATSID(String fSTR_SCATSID) {
                        FSTR_SCATSID = fSTR_SCATSID;
                    }
                    public String getFSTR_DESC() {
                        return FSTR_DESC;
                    }
                    public void setFSTR_DESC(String fSTR_DESC) {
                        FSTR_DESC = fSTR_DESC;
                    }
                    public String getFSTR_DATE() {
                        return FSTR_DATE;
                    }
                    public void setFSTR_DATE(String fSTR_DATE) {
                        FSTR_DATE = fSTR_DATE;
                    }
                    public String getNUM_TIME() {
                        return NUM_TIME;
                    }
                    public void setNUM_TIME(String nUM_TIME) {
                        NUM_TIME = nUM_TIME;
                    }
                    public String getMIN_TIME() {
                        return MIN_TIME;
                    }
                    public void setMIN_TIME(String mIN_TIME) {
                        MIN_TIME = mIN_TIME;
                    }
                    public String getNUMOF_ALARMS() {
                        return NUMOF_ALARMS;
                    }
                    public void setNUMOF_ALARMS(String nUMOF_ALARMS) {
                        NUMOF_ALARMS = nUMOF_ALARMS;
                    }
                    public String getUTIM() {
                        return UTIM;
                    }
                    public void setUTIM(String uTIM) {
                        UTIM = uTIM;
                    }

                    @Override
                    public String toString() {
                        return "ali [FSTR_SCATSID=" + FSTR_SCATSID + ", FSTR_DESC="
                                + FSTR_DESC + ", FSTR_DATE=" + FSTR_DATE + ", NUM_TIME="
                                + NUM_TIME + ", MIN_TIME=" + MIN_TIME + ", NUMOF_ALARMS="
                                + NUMOF_ALARMS + ", UTIM=" + UTIM + "]";

                    }

            }

读取excel的流程



import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ReadExcelUtils {


    //sheetIndex:读sheet几表,rowIndex:第几行开始读
    public List<List<String>> readExcelBySheetIndex(String file, int sheetIndex, int rowIndex) {
        List<List<String>> list = new ArrayList<List<String>>();
        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");

        //File excelFile = file; // 创建文件对象
        try {
            // 文件流
            FileInputStream is = new FileInputStream(file);
            // 支持Excel 2003 2007
            Workbook workbook = WorkbookFactory.create(is);
            int sheetCount = workbook.getNumberOfSheets(); // Sheet的数量
            int cellCount = 0;
            // 遍历每个Sheet
            Sheet sheet = workbook.getSheetAt(sheetIndex);
            int rowCount = sheet.getPhysicalNumberOfRows(); // 获取总行数
            // 遍历每一行
            for (int r = rowIndex; r < rowCount; r++) {
                Row row = sheet.getRow(r);
                if (row == null) {// 若为null,表明中间有一行为空值,但是获得总行数是没有获得这一行,所以rowCount+1
                    rowCount++;
                    continue;
                }
                if (cellCount == 0){
                    cellCount = row.getPhysicalNumberOfCells(); // 获取总列数
                }

                List<String> rows = new ArrayList<String>();
                // 遍历每一列
                for (int c = 0; c < cellCount; c++) {
                    Cell cell = row.getCell(c);
                    if (cell == null) {
                        rows.add("");
                        continue;
                    }
                    int cellType = cell.getCellType();
                    String cellValue = null;
                    switch (cellType) {
                    case Cell.CELL_TYPE_STRING: // 文本
                        cellValue = cell.getStringCellValue();
                        break;
                    case Cell.CELL_TYPE_NUMERIC: // 数字、日期
                        if (HSSFDateUtil.isCellDateFormatted(cell)) {
                            cellValue = fmt.format(cell.getDateCellValue()); // 日期型
                        } else {
                            cell.setCellType(HSSFCell.CELL_TYPE_STRING);// 将数字转成字符串
                            cellValue = cell.getStringCellValue();
                        }
                        break;
                    case Cell.CELL_TYPE_BOOLEAN: // 布尔型
                        cellValue = String.valueOf(cell
                                .getBooleanCellValue());
                        break;
                    case Cell.CELL_TYPE_BLANK: // 空白
                        cellValue = cell.getStringCellValue();
                        break;
                    case Cell.CELL_TYPE_ERROR: // 错误
                        cellValue = String
                                .valueOf(cell.getErrorCellValue());
                        break;
                    case Cell.CELL_TYPE_FORMULA: // 公式
                        // 用数字方式获取公式结果,根据值判断是否为日期类型
                        double numericValue = cell.getNumericCellValue();
                        if (HSSFDateUtil.isValidExcelDate(numericValue)) { // 如果是日期类型
                            cellValue = fmt.format(cell.getDateCellValue());
                        } else {
                            cellValue = String.valueOf(numericValue);
                        }
                        break;
                    default:
                        cellValue = "";
                    }
                    rows.add(cellValue);
                }
                list.add(rows);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return list;
    }
}

解析类

import java.io.File;
import java.util.ArrayList;
import java.util.List;


public class drexcels {


     public static void main(String[] args) throws Exception {
         String flie;//excel文件的地址ַ
        List<List<String>> list = new ArrayList<List<String>>();

        flie="src\\ali.xlsx";//excel文件的地址
        ReadExcelUtils readExcel=new ReadExcelUtils();
        list = readExcel.readExcelBySheetIndex(flie,0,0);// 读sheet1 第1行开始读数据,下标从0开始

          String array[][]= new String[list.size()][];

         int i=0;
        for(List<String> attribute : list) {
            array[i]=attribute.toArray(new String[0]);
            i++;
            }
        List<ali> list1 =new  ArrayList<ali>();
        for (int j = 1; j < array.length; j++) {
            ali a = new ali();
            a.setFSTR_SCATSID(array[j][0]);
            a.setFSTR_DESC(array[j][1]);
            a.setFSTR_DATE(array[j][2]);
            a.setNUM_TIME(array[j][3]);
            a.setMIN_TIME(array[j][4]);
            a.setNUMOF_ALARMS(array[j][5]);
            a.setUTIM(array[j][6]);
            list1.add(a);
        }

                    for (ali attribute : list1) {
                        System.out.println(attribute);
                    }


    }

    }

细节如解析txt
[http://blog.csdn.net/sinat_31032177/article/details/78443635]

需要添加jar包
这里写图片描述

运行结果如下
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中有很多库可以用来解析Markdown,其中比较流行的有CommonMark、Pegdown、Flexmark等。 以Flexmark为例,可以按照以下步骤来解析Markdown: 1. 引入Flexmark库的依赖,例如在Maven项目中可以在pom.xml文件中添加以下代码: ``` <dependency> <groupId>com.vladsch.flexmark</groupId> <artifactId>flexmark-all</artifactId> <version>0.36.8</version> </dependency> ``` 2. 编写Java代码来解析Markdown,例如: ``` import com.vladsch.flexmark.util.ast.Node; import com.vladsch.flexmark.parser.Parser; import com.vladsch.flexmark.html.HtmlRenderer; public class MarkdownParser { public static String parse(String markdown) { Parser parser = Parser.builder().build(); Node document = parser.parse(markdown); HtmlRenderer renderer = HtmlRenderer.builder().build(); return renderer.render(document); } } ``` 在上面的代码中,我们首先创建了一个Parser对象来解析Markdown文本,然后将解析得到的Node对象传递给HtmlRenderer对象来渲染成HTML格式的字符串。最终返回的就是解析后的HTML字符串。 3. 调用MarkdownParser类的parse方法来解析Markdown,例如: ``` String markdown = "## Hello, world!\n\nThis is a **Markdown** document."; String html = MarkdownParser.parse(markdown); System.out.println(html); ``` 运行上面的代码,输出的结果应该是: ``` <h2>Hello, world!</h2> <p>This is a <strong>Markdown</strong> document.</p> ``` 这就是将Markdown解析成HTML的过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值