⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gen_xls.java

📁 关于生成EXCEL文件的封装类
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			wb.write(fout);
		}
		catch (IOException ex)
		{
			errorMessage = "写入报表产生错误! " + ex.getMessage();
			System.out.println( errorMessage );
			ex.printStackTrace();
		}
		finally
		{
			if (fout != null)
			{
				try
				{
					fout.close();
				}catch (IOException ex){}
			}
		}
	}
	
	//报表的结果记录数
	public int getResultCount()
	{
		return resultCount;
	}
	
	//得到当前所产生 的错误信息
	public String getErrorMessage()
	{
		return errorMessage;
	}
	
	/**
	* 生成报表头
	* 根据要生成报表的样式,依次建立cell
	* @param wb HSSFWorkbook
	* @param sheet HSSFSheet
	* @param rowNumber int 报头从第几行开始创建
	*/
	private int createReportHeader(HSSFWorkbook wb, HSSFSheet sheet,
														int rowNumber)
	{
		int currentRowCount = rowNumber;
		String[] headers = new String[]{
			"单 位 名 称", "入  学  率", "辍  学  率", "备  注",
			"学龄儿童总人数(不含盲、聋哑、丧失学习能力者)", "其中", "已入学人数",
			"其中", "入学率(%)", "女童入学率(%)",
			"上学年初在校学生总人数", "学年内辍学学生总人数","辍学率(%)", "女童数", "女童数"};
		HSSFCell cell = null;
		int columnCounter = 0;
		int rowCounter = rowNumber;
		for (int i = 0; i < headers.length; i++)
		{
			cell = sheet.createRow(rowCounter).createCell((short)columnCounter);
			cell.setEncoding(HSSFCell.ENCODING_UTF_16);
			cell.setCellType(HSSFCell.CELL_TYPE_STRING);
			cell.getCellStyle().setAlignment(HSSFCellStyle.ALIGN_CENTER );
			cell.setCellValue(headers[i]);
			if (i == 0) //合并单位名称单元格
			{
				cell.getCellStyle().setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				sheet.setColumnWidth((short)columnCounter, (short) ( ( 50 * 8 ) / ( (double) 1 / 20 ) ));  //设置宽度
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter + 2, (short)columnCounter));
			}
			else if (i == 1) //合并入学率单元格
			{
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter, (short)(columnCounter + 5)));
				columnCounter += 5;
			}
			else if (i == 2)  //合并辍学率单元格
			{
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter, (short)(columnCounter + 2)));
				columnCounter += 2;
			}
			else if (i == 3) //合并备注单元格
			{
				cell.getCellStyle().setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				sheet.setColumnWidth((short)columnCounter, (short) ( ( 50 * 8 ) / ( (double) 1 / 20 ) ));  //设置宽度
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter + 2, (short)columnCounter));
			}
			else if (i == 4) //合并学龄儿童总人数(不含盲、聋哑、丧失学习能力者)单元格
			{
				cell.getCellStyle().setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter + 1, (short)columnCounter));
			}
			else if (i == 6) //合并已入学人数单元格
			{
				cell.getCellStyle().setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter + 1, (short)columnCounter));
			}
			else if (i == 8) //合并入学率(%)单元格
			{
				cell.getCellStyle().setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter + 1, (short)columnCounter));
			}
			else if (i == 9) // 合并女童入学率(%)单元格
			{
				cell.getCellStyle().setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter + 1, (short)columnCounter));
			}
			else if (i == 10)  //合并上学年初在校学生总人数单元格
			{
				cell.getCellStyle().setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter + 1, (short)columnCounter));
			}
			else if (i == 11)  //合并学年内辍学学生总人数单元格
			{
				cell.getCellStyle().setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter + 1, (short)columnCounter));
			}
			else if (i == 12)  //合并辍学率(%)单元格
			{
				cell.getCellStyle().setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
				sheet.addMergedRegion(new Region(rowCounter, (short)columnCounter, rowCounter + 1, (short)columnCounter));
			}
	
			columnCounter++;
		
			//跳行
			if (i == 3 || i == 12)
			{
				rowCounter++;
				if (i == 3)  //如果是第一行换行
				{
					columnCounter = 1;
				}
				else if (i == 12)  //如果是第二行换行
				{
					columnCounter = 2;
				}
			}
			if (i == 13)  //如果是遇到第一个女童单元格,则把跳过一个单元格,才正确
			{
				columnCounter++;
			}
		}
		currentRowCount = rowCounter;
		return currentRowCount;
	}
	
	public static String[] _CharSplit( String str, char regex )
    {
        String str_array[] = null;
        char ch[] = str.toCharArray();
        char ch_tmp[] = null;
        int int_flag = 0;
        for( int i=0; i<ch.length; i++ )
        {
            if( ch[i] == regex )
            {
                int_flag++;
            }
        }
        if( int_flag < 1 ){
            str_array = new String[1];
            str_array[0] = str;
            return str_array;
        }
        ch_tmp = new char[str.length()];
        str_array = new String[int_flag+1];
        int k = 0;
        int h = 0;

        for( int n=0; n<ch.length; n++ )
        {
            if( ch[n] != regex )
            {
                ch_tmp[k] = ch[n];
                k++;
            }
            else
            {
                str_array[h] = new String( ch_tmp ).substring(0,k);
                ch_tmp = new char[str.length()];
                k = 0;
                h++;
            }
        }
        str_array[h] = new String( ch_tmp ).substring(0,k);
        return str_array;
    }
  
	public static void main( String ss[] )
	{
		gen_xls g = new gen_xls();
		g.genReport( "d:\\", "test.xls","测试JAVA生成Excel" );
		
	//	System.out.println( "ErrorMsg==="+g.getErrorMessage() );
	//	System.out.println( "FILENAME==="+g.getOutExcelFileName() );
	/****
		for( int i=0; i<10;i++)
		{
			String str = "";
			int k=10-(i+1);
			for( int n=0;n<k;n++)
			{
				str += " ";
			}
			String start="";
			for( int j=0;j<i+1;j++)
				start +=" *";
			
			System.out.println( str + start );
		}***/
		
		String str = "20|C.2";
		StringBuffer start=new StringBuffer(str);
		char ch[]= new char[str.length()];
		ch = str.toCharArray();
		
		for( int i=0; i<ch.length;i++ )
		{
			if( ch[i]=='|' )
				System.out.println( i+"\t"+ch[i] );
		}
		
		System.out.println("kH".toLowerCase());
		
		String kk[] = g._CharSplit("2|S;7|D3;3|S;4|S;5|N",'|');
		for(int h=0;h<kk.length;h++ )
		{
			System.out.println("["+kk[h]+"]");
		}
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -