• 使用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

  • 相关阅读:
    产品思维和用户思维
    IT界是丽春院?
    凡事要讲究方式方法
    一个比较差的接口定义
    软件开发中的官话和土话
    Frida之app逆向hook,动态插装
    Airtext远程控制多台手机
    linux下使用uwsgi部署flask写的接口遇到的坑
    软件质量管理(六)- 无有规矩不成方圆
    软件质量管理(五)- 质量优异的产品离不开一支优秀的团队
  • 原文地址:https://www.cnblogs.com/navy-wang/p/3274109.html
Copyright © 2020-2023  润新知