java达成excel文件转变为xml文件

时间:2019-09-23 12:07来源: 操作系统
一、导包: 使用maven在netbeans下构建wicket项目,mavenwicket     在netbeans下构建wicket项目,网上流传较多的方法是直接使用netbeans的wicket插件,这种方法虽然简单,但是依赖的wicket版本较

一、导包:

使用maven在netbeans下构建wicket项目,mavenwicket

     在netbeans下构建wicket项目,网上流传较多的方法是直接使用netbeans的wicket插件,这种方法虽然简单,但是依赖的wicket版本较老,更新较慢,并且很容易与其他第三方库不兼容。使用maven构建wicket项目,可以很好的整合第三方依赖库,并且也能使用最新的wicket版本,减少一定的安全风险。下面介绍方法。

     首先选择新建项目->Maven->Web应用程序->下一步

        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-core</artifactId>
            <version>6.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-auth-roles</artifactId>
            <version>6.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-extensions</artifactId>
            <version>6.22.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-ioc</artifactId>
            <version>6.22.0</version>
        </dependency>

如果需要添加jquery-ui,可以增加以下依赖:

        <dependency>
            <groupId>com.googlecode.wicket-jquery-ui</groupId>
            <artifactId>wicket-jquery-ui</artifactId>
            <version>6.22.0</version> <!-- or 1.5.11, 6.21.0 -->
        </dependency>
        <dependency>
                <groupId>com.googlecode.wicket-jquery-ui</groupId>
                <artifactId>wicket-jquery-ui-core</artifactId>
                <version>6.22.0</version>
        </dependency>
        <dependency>
                <groupId>com.googlecode.wicket-jquery-ui</groupId>
                <artifactId>wicket-jquery-ui-calendar</artifactId>
                <version>6.22.0</version>
        </dependency>
        <dependency>
                <groupId>com.googlecode.wicket-jquery-ui</groupId>
                <artifactId>wicket-kendo-ui</artifactId>
                <version>6.22.0</version>
        </dependency>

     这时候依赖关系就创建好了,最新版本的wicket库也导入了进来。接下来设置代码和资源所在的位置。找到<build>节点,在该节点下添加资源节点,如下所示:

        <resources>
        <resource>
            <filtering>false</filtering>
            <directory>src/main/java</directory>
            <includes>
                    <include>**</include>
            </includes>
            <excludes>
                    <exclude>**/*.java</exclude>
            </excludes>
        </resource>
        </resources>

     这里<directory>节点指定了java资源的位置,即以pom.xml所在位置为根目录,其下资源路径为src/main/java。

     之后可以在资源路径下编写wicket的应用程序代码,例如定义一个Application类继承自WebApplication,重载一些必须的方法。当完成wicket代码编写后,修改“web页”,将index.jsp删除掉,添加一个WEB-INF目录,在这个目录下添加一个web.xml,将以下内容复制进去:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns=""
     xmlns:xsi=""
     xsi:schemaLocation=" "
     version="3.0">

    <filter>
        <filter-name>WicketApplication</filter-name>
        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
            <param-name>applicationClassName</param-name>
            <param-value>com.example.src.Application</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>WicketApplication</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>
     <param-value>节点即对应了你src/main/java下Application类的名称和路径(此处为com/example/src)

     于是netbeans下wicket项目就构建完成了。

在netbeans下构建wicket项目,网上流传较多的方法是直接使用netbeans的wicket插件,这种方法虽然简...

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-examples</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1.3</version>
</dependency>

二、代码部分:

public class AnalysisEtoX {    public static void main(String[] args) {        try {            System.out.println("=============");            // 用输入流从本地拿到对应的Excel文件            InputStream stream = new FileInputStream("C:\Users\Administrator\Desktop\试题.xlsx");            // 指定要生成的xml的路径,并构建文件对象            File f = new File("test.xml");// 新建个file对象把解析之后得到的xml存入改文件中            writerXML(stream, f);// 将数据以xml形式写入文本        } catch (FileNotFoundException e) {            System.out.println("未找到指定路径的文件!");            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    private static void writerXML(InputStream stream, File f) throws IOException {        System.out.println("into writerXML");        FileOutputStream fo = new FileOutputStream;// 得到输入流        Document doc = readExcell;// 读取EXCEL函数        Format format = Format.getCompactFormat().setEncoding.setIndent("");        XMLOutputter XMLOut = new XMLOutputter;// 在元素后换行,每一层元素缩排四格        XMLOut.output;        fo.close();    }    private static Document readExcell(InputStream stream) {        System.out.println("into readExcell");        // 设置根<tax_institutions></tax_institutions>元素        Element root = new Element("tax_institutions");        Document doc = new Document;        try {            HSSFWorkbook hw = new HSSFWorkbook;            // 获取工作薄的个数,即一个excel文件中包含了多少个Sheet工作簿            int WbLength = hw.getNumberOfSheets();            System.out.println("WbLength=" + WbLength);            for (int i = 0; i < WbLength; i++) {                HSSFSheet shee = hw.getSheetAt;                int length = shee.getLastRowNum();                System.out.println("行数:" + length);                for (int j = 1; j <= length; j++) {                    HSSFRow row = shee.getRow;                    if (row == null) {                        continue;                    }                    int cellNum = row.getPhysicalNumberOfCells();// 获取一行中最后一个单元格的位置                    System.out.println("列数cellNum:" + cellNum);                    Element e = null;                    // 设置根元素下的并列元素<tax_institution></tax_institution>                    e = new Element("tax_institution");                    // Element[] es = new Element[16];                    for (int k = 0; k < cellNum; k++) {                        HSSFCell cell = row.getCell((short) k);                        String temp = get;                        System.out.print(k + " " + temp + ":");                        Element item = new Element;                        if (cell == null) {                            item.setText("");                            e.addContent;                            cellNum++;// 如果存在空列,那么cellNum增加1,这一步很重要。                            continue;                        }                        else {                            String cellvalue = "";                            switch (cell.getCellType {                            // 如果当前Cell的Type为NUMERIC                            case HSSFCell.CELL_TYPE_NUMERIC:                            case HSSFCell.CELL_TYPE_FORMULA: {                                // 判断当前的cell是否为Date                                if (HSSFDateUtil.isCellDateFormatted {                                    // 如果是Date类型则,转化为Data格式                                    // 方法1:这样子的data格式是带时分秒的:2011-10-12 0:00:00                                    // cellvalue =                                    cell.getDateCellValue().toLocaleString();                                    // 方法2:这样子的data格式是不带带时分秒的:2011-10-12                                    Date date = cell.getDateCellValue();                                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");                                    cellvalue = sdf.format;                                    item.setText(cellvalue);                                }                                // 如果是纯数字                                else {                                    // 取得当前Cell的数值                                    cellvalue = String.valueOf((int) cell.getNumericCellValue;                                    item.setText(cellvalue);                                }                                break;                            }                            // 如果当前Cell的Type为STRIN                            case HSSFCell.CELL_TYPE_STRING:                                // 取得当前的Cell字符串                                cellvalue = cell.getRichStringCellValue().getString();                                item.setText(cellvalue);                                break;                            // 默认的Cell值                            default:                                cellvalue = " ";                                item.setText(cellvalue);                            }                            e.addContent;                            System.out.println(cellvalue);                        }                    }                    root.addContent;                }            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                stream.close();            } catch (IOException e1) {                e1.printStackTrace();            }        }        return doc;    }    // 设置并列元素里的子元素名    private static String get(int k) {        String test = "";        switch  {        case 0:            test = "org_name";            break;        case 1:            test = "legal_mobile_phone";            break;        case 2:            test = "org_address";            break;        case 3:            test = "cert_type";            break;        case 4:            test = "postal_code";            break;        case 5:            test = "reg_sum";            break;        case 6:            test = "business_scope";            break;        case 7:            test = "social_credit_code";            break;        case 8:            test = "reg_type";            break;        case 9:            test = "legal_person_name";            break;        case 10:            test = "cert_number";            break;        case 11:            test = "found_time";            break;        case 12:            test = "service_status";            break;        case 13:            test = "staff_sum";            break;        case 14:            test = "partner_sum";            break;        case 15:            test = "is_branch_org";            break;        default:        }        return test;    }}

转载地址csdn:

注意:

excel版本保存文件的后缀名问题,如果是.xls,使用HSSFWorkbook;如果是xlsx,使用XSSFWorkbook。

版本错误会抛出OfficeXmlFileException!!!

编辑: 操作系统 本文来源:java达成excel文件转变为xml文件

关键词: