zoukankan      html  css  js  c++  java
  • 使用jxl读取excel内容,并转换成Json,用于Datagrid

    一、上传excel文件,得到InputStream,由InputStream得到Jxl中的Workbook,取出内容,存到二维数组中。  

    1、使用 Jquery Uploadify 插件(http://www.uploadify.com/ ),得到FileItem,由FileItem得到InputStream。

     
       String[][] excelContent = getExcelContent(fileItem.getInputStream());
    

    2、将Excel内容存放到二维数组中。

    public String[][] getExcelContent(InputStream is) {
      try {
       Workbook workBook = Workbook.getWorkbook(is);
       Sheet sheet = workBook.getSheet(0);
       int sheetColumns = sheet.getColumns();
       int sheetRows = sheet.getRows();
       // excel内容
       String[][] excelContent = new String[sheetRows][sheetColumns];
       for (int i = 0; i < sheetRows; i++) {
        for (int j = 0; j < sheetColumns; j++) {
         // 将excel值放入二维数组excelContent中
         excelContent[i][j] = sheet.getCell(j, i).getContents();
        }
       }
    

    二、将二维数组转换成JSON(stringBuffer)格式为:[{"filed1":,"value"},{"filed2":,"value2"}]

    stringBuffer = convertToJson(excelContent);

      拼字符串花了我很多时间

     

    private static final String QUOTATION_MARKS = """;  //双引号
    private static final String COMMA = ",";   //逗号
    
    public StringBuffer convertToJson(String[][] srcArray) {
    
    		StringBuffer stringBuffer = new StringBuffer();
    		boolean first = true;
    		stringBuffer.append("[");
    
    		for (int i = 0; i < srcArray.length; i++) {
    			String[] arrayItem = srcArray[i];
    			if (!first) {
    				stringBuffer.append(COMMA);
    			}
    			stringBuffer.append("{");
    
    			boolean first2 = true;
    			for (int j = 0; j < arrayItem.length; j++) {
    
    				if (!first2) {
    					stringBuffer.append(COMMA);
    				}
    				stringBuffer.append(QUOTATION_MARKS + "field" + j
    						+ QUOTATION_MARKS + ":"" + arrayItem[j]
    						+ QUOTATION_MARKS);
    				first2 = false;
    			}
    			stringBuffer.append("}");
    			first = false;
    		}
    
    		stringBuffer.append("]");
    		return stringBuffer;
    
    	}

     三、生成可用于DataGrid加载的Json格式,即 {"total":n,"rows":[{"filed1":,"value"},{"filed2":,"value2"}]}。

    sheetRows = excelContent.length;
    sheetColumns = excelContent[0].length;
     
    StringBuffer stringBuffer2 = new StringBuffer("");
    stringBuffer2.append("{");
       stringBuffer2.append(QUOTATION_MARKS + "total"
         + QUOTATION_MARKS + ":" + sheetRows + COMMA
         + QUOTATION_MARKS + "rows" + QUOTATION_MARKS + ":");
       stringBuffer2.append(stringBuffer);
    stringBuffer2.append("}");
    

     http://bbs.csdn.net/topics/390395096

  • 相关阅读:
    html 底部虚线
    C# 写入二进制文件
    js document 触发按键事件
    python之工作举例:通过复制NC文件来造数据
    python之多线程举例
    python之发送HTML内容的邮件
    python之打印日志logging
    python之查询指定目录下的最新文件
    python之datetime类
    python之Counter类:计算序列中出现次数最多的元素
  • 原文地址:https://www.cnblogs.com/navy-wang/p/3274109.html
Copyright © 2011-2022 走看看