导出Excel
来源:互联网 发布:淘宝运营金秋 编辑:程序博客网 时间:2024/06/07 09:22
public class ExcelUitl<T> {/** * 导出差值报表Excel的方法 * * @param title * excel中的sheet名称 * @param headers * 表头 * @param result * 结果集 * @param out * 输出流 * @param pattern * 时间格式 * @throws Exception */@SuppressWarnings("deprecation")public void exportoExcel(String title, String[] headers, String[] columns, Collection<T> result, OutputStream out,String pattern) throws Exception {// 声明一个工作薄HSSFWorkbook workbook = new HSSFWorkbook();// 生成一个表格HSSFSheet sheet = workbook.createSheet(title);// 设置表格默认列宽度为20个字节sheet.setDefaultColumnWidth((short) 20);// 生成一个样式HSSFCellStyle style = workbook.createCellStyle();// 设置单元格背景色,设置单元格背景色以下两句必须同时设置style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); // 设置填充色style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// 设置填充样式 // 设置单元格上、下、左、右的边框线style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);// 设置居中style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 生成一个字体HSSFFont font = workbook.createFont();//font.setColor(HSSFColor.VIOLET.index);// font.setFontHeightInPoints((short) 12);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 把字体应用到当前的样式style.setFont(font);// 指定当单元格内容显示不下时自动换行style.setWrapText(true);// 声明一个画图的顶级管理器HSSFPatriarch patriarch = sheet.createDrawingPatriarch();// 以下可以用于设置导出的数据的样式/*// 生成并设置另一个样式HSSFCellStyle style2 = workbook.createCellStyle();style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);style2.setBorderRight(HSSFCellStyle.BORDER_THIN);style2.setBorderTop(HSSFCellStyle.BORDER_THIN);style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //// 生成另一个字体HSSFFont font2 = workbook.createFont();font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); // 把字体应用到当前的样式style2.setFont(font2); // //声明一个画图的顶级管理器 HSSFPatriarch patriarch2 =sheet.createDrawingPatriarch();*/// 定义注释的大小和位置,详见文档 HSSFComment comment = patriarch.createComment(new// HSSFClientAnchor(0, 0, 0, 0, (short) 4, 2, (short) 6, 5)); // 设置注释内容// comment.setString(new HSSFRichTextString("可以在POI中添加注释!")); //// 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容. comment.setAuthor("leno");// 产生表格标题行// 表头的样式HSSFCellStyle titleStyle = workbook.createCellStyle();// 创建样式对象titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中// 设置字体HSSFFont titleFont = workbook.createFont(); // 创建字体对象titleFont.setFontHeightInPoints((short) 15); // 设置字体大小titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置粗体// titleFont.setFontName("黑体"); // 设置为黑体字titleStyle.setFont(titleFont);sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) (headers.length - 1)));// 指定合并区域HSSFRow rowHeader = sheet.createRow(0);HSSFCell cellHeader = rowHeader.createCell((short) 0); // 只能往第一格子写数据,然后应用样式,就可以水平垂直居中HSSFRichTextString textHeader = new HSSFRichTextString(title);cellHeader.setCellStyle(titleStyle);cellHeader.setCellValue(textHeader);HSSFRow row = sheet.createRow(1);for (int i = 0; i < headers.length; i++) {HSSFCell cell = row.createCell((short) i);cell.setCellStyle(style);HSSFRichTextString text = new HSSFRichTextString(headers[i]);cell.setCellValue(text);}// 遍历集合数据,产生数据行if (result != null) {int index = 2;for (T t : result) {// Field[] fields = t.getClass().getDeclaredFields();row = sheet.createRow(index);index++;for (short i = 0; i < columns.length; i++) {HSSFCell cell = row.createCell(i);// Field field = fields[i];// String fieldName = field.getName();String fieldName = columns[i];String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);Class tCls = t.getClass();Method getMethod = tCls.getMethod(getMethodName, new Class[] {});// getMethod.getReturnType().isInstance(obj);Object value = getMethod.invoke(t, new Class[] {});String textValue = null;if (value == null) {textValue = "";} else if (value instanceof Date) {Date date = (Date) value;SimpleDateFormat sdf = new SimpleDateFormat(pattern);textValue = sdf.format(date);} else if (value instanceof byte[]) {// 有图片时,设置行高为60px;row.setHeightInPoints(60);// 设置图片所在列宽度为80px,注意这里单位的一个换算sheet.setColumnWidth(i, (short) (35.7 * 80));// sheet.autoSizeColumn(i);byte[] bsValue = (byte[]) value;HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, (short) 6, index, (short) 6,index);anchor.setAnchorType(2);patriarch.createPicture(anchor, workbook.addPicture(bsValue, HSSFWorkbook.PICTURE_TYPE_JPEG));} else {// 其它数据类型都当作字符串简单处理textValue = value.toString();}if (textValue != null) {Pattern p = Pattern.compile("^//d+(//.//d+)?$");Matcher matcher = p.matcher(textValue);if (matcher.matches()) {// 是数字当作double处理cell.setCellValue(Double.parseDouble(textValue));} else {HSSFRichTextString richString = new HSSFRichTextString(textValue);// HSSFFont font3 = workbook.createFont();// font3.setColor(HSSFColor.BLUE.index);// richString.applyFont(font3);cell.setCellValue(richString);}}style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中cell.setCellStyle(style);}}}workbook.write(out);out.flush();out.close();}/** * 导出Excel的方法 * * @param title * excel中的sheet名称 * @param headers * 表头 * @param result * 结果集 * @param out * 输出流 * @param pattern * 时间格式 * @param getDate * @throws Exception */public void exportoExcelForDvalue(String title, String[] headers, String[] columns, Collection<T> result, OutputStream out,String pattern,String getDate) throws Exception {// 声明一个工作薄HSSFWorkbook workbook = new HSSFWorkbook();// 生成一个表格HSSFSheet sheet = workbook.createSheet(title);// 设置表格默认列宽度为20个字节sheet.setDefaultColumnWidth((short) 20);// 生成一个样式HSSFCellStyle style = workbook.createCellStyle();// 设置单元格背景色,设置单元格背景色以下两句必须同时设置style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); // 设置填充色style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// 设置填充样式 // 设置单元格上、下、左、右的边框线style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);// 设置居中style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 生成一个字体HSSFFont font = workbook.createFont();//font.setColor(HSSFColor.VIOLET.index);// font.setFontHeightInPoints((short) 12);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 把字体应用到当前的样式style.setFont(font);// 指定当单元格内容显示不下时自动换行style.setWrapText(true);// 声明一个画图的顶级管理器HSSFPatriarch patriarch = sheet.createDrawingPatriarch();// 以下可以用于设置导出的数据的样式/*// 生成并设置另一个样式HSSFCellStyle style2 = workbook.createCellStyle();style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);style2.setBorderRight(HSSFCellStyle.BORDER_THIN);style2.setBorderTop(HSSFCellStyle.BORDER_THIN);style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //// 生成另一个字体HSSFFont font2 = workbook.createFont();font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); // 把字体应用到当前的样式style2.setFont(font2); // //声明一个画图的顶级管理器 HSSFPatriarch patriarch2 =sheet.createDrawingPatriarch();*/// 定义注释的大小和位置,详见文档 HSSFComment comment = patriarch.createComment(new// HSSFClientAnchor(0, 0, 0, 0, (short) 4, 2, (short) 6, 5)); // 设置注释内容// comment.setString(new HSSFRichTextString("可以在POI中添加注释!")); //// 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容. comment.setAuthor("leno");// 产生表格标题行// 表头的样式HSSFCellStyle titleStyle = workbook.createCellStyle();// 创建样式对象titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中// 设置字体HSSFFont titleFont = workbook.createFont(); // 创建字体对象titleFont.setFontHeightInPoints((short) 15); // 设置字体大小titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置粗体// titleFont.setFontName("黑体"); // 设置为黑体字titleStyle.setFont(titleFont);sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) (headers.length - 1)));// 指定合并区域HSSFRow rowHeader = sheet.createRow(0);HSSFCell cellHeader = rowHeader.createCell((short) 0); // 只能往第一格子写数据,然后应用样式,就可以水平垂直居中HSSFRichTextString textHeader = new HSSFRichTextString(title);cellHeader.setCellStyle(titleStyle);cellHeader.setCellValue(textHeader);sheet.addMergedRegion(new Region(1, (short) 0, 1, (short) (headers.length-1)));// 指定合并区域HSSFRow rowDate = sheet.createRow(1);HSSFCell cellDate = rowDate.createCell((short) 0); // 只能往第一格子写数据,然后应用样式,就可以水平垂直居中HSSFRichTextString textDate = new HSSFRichTextString(getDate);HSSFCellStyle dateStyle = workbook.createCellStyle();// 创建样式对象dateStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中dateStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中cellDate.setCellStyle(dateStyle);cellDate.setCellValue(textDate);HSSFRow row = sheet.createRow(2);for (int i = 0; i < headers.length; i++) {HSSFCell cell = row.createCell((short) i);cell.setCellStyle(style);HSSFRichTextString text = new HSSFRichTextString(headers[i]);cell.setCellValue(text);}// 遍历集合数据,产生数据行if (result != null) {int index = 3;for (T t : result) {// Field[] fields = t.getClass().getDeclaredFields();row = sheet.createRow(index);index++;for (short i = 0; i < columns.length; i++) {HSSFCell cell = row.createCell(i);// Field field = fields[i];// String fieldName = field.getName();String fieldName = columns[i];String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);Class tCls = t.getClass();Method getMethod = tCls.getMethod(getMethodName, new Class[] {});// getMethod.getReturnType().isInstance(obj);Object value = getMethod.invoke(t, new Class[] {});String textValue = null;if (value == null) {textValue = "";} else if (value instanceof Date) {Date date = (Date) value;SimpleDateFormat sdf = new SimpleDateFormat(pattern);textValue = sdf.format(date);} else if (value instanceof byte[]) {// 有图片时,设置行高为60px;row.setHeightInPoints(60);// 设置图片所在列宽度为80px,注意这里单位的一个换算sheet.setColumnWidth(i, (short) (35.7 * 80));// sheet.autoSizeColumn(i);byte[] bsValue = (byte[]) value;HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, (short) 6, index, (short) 6,index);anchor.setAnchorType(2);patriarch.createPicture(anchor, workbook.addPicture(bsValue, HSSFWorkbook.PICTURE_TYPE_JPEG));} else {// 其它数据类型都当作字符串简单处理textValue = value.toString();}if (textValue != null) {Pattern p = Pattern.compile("^//d+(//.//d+)?$");Matcher matcher = p.matcher(textValue);if (matcher.matches()) {// 是数字当作double处理cell.setCellValue(Double.parseDouble(textValue));} else {HSSFRichTextString richString = new HSSFRichTextString(textValue);// HSSFFont font3 = workbook.createFont();// font3.setColor(HSSFColor.BLUE.index);// richString.applyFont(font3);cell.setCellValue(richString);}}}}}workbook.write(out);out.flush();out.close();}@SuppressWarnings("deprecation")public void exportoExcelForDvalue2(String title, String[] headers, String[] columns, Collection<T> result, OutputStream out,String pattern, String getDate) throws Exception {// 声明一个工作薄HSSFWorkbook workbook = new HSSFWorkbook();// 生成一个表格HSSFSheet sheet = workbook.createSheet(title);// 设置表格默认列宽度为20个字节sheet.setDefaultColumnWidth((short) 20);// 生成一个样式HSSFCellStyle style = workbook.createCellStyle();// 设置单元格背景色,设置单元格背景色以下两句必须同时设置style.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); // 设置填充色style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// 设置填充样式 // 设置单元格上、下、左、右的边框线style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);// 设置居中style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 生成一个字体HSSFFont font = workbook.createFont();//font.setColor(HSSFColor.VIOLET.index);// font.setFontHeightInPoints((short) 12);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 把字体应用到当前的样式style.setFont(font);// 指定当单元格内容显示不下时自动换行style.setWrapText(true);// 声明一个画图的顶级管理器HSSFPatriarch patriarch = sheet.createDrawingPatriarch();// 以下可以用于设置导出的数据的样式/*// 生成并设置另一个样式HSSFCellStyle style2 = workbook.createCellStyle();style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);style2.setBorderRight(HSSFCellStyle.BORDER_THIN);style2.setBorderTop(HSSFCellStyle.BORDER_THIN);style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //// 生成另一个字体HSSFFont font2 = workbook.createFont();font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); // 把字体应用到当前的样式style2.setFont(font2); // //声明一个画图的顶级管理器 HSSFPatriarch patriarch2 =sheet.createDrawingPatriarch();*/// 定义注释的大小和位置,详见文档 HSSFComment comment = patriarch.createComment(new// HSSFClientAnchor(0, 0, 0, 0, (short) 4, 2, (short) 6, 5)); // 设置注释内容// comment.setString(new HSSFRichTextString("可以在POI中添加注释!")); //// 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容. comment.setAuthor("leno");// 产生表格标题行// 表头的样式HSSFCellStyle titleStyle = workbook.createCellStyle();// 创建样式对象titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中// 设置字体HSSFFont titleFont = workbook.createFont(); // 创建字体对象titleFont.setFontHeightInPoints((short) 15); // 设置字体大小titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置粗体// titleFont.setFontName("黑体"); // 设置为黑体字titleStyle.setFont(titleFont);int num = result.size();sheet.addMergedRegion(new Region(3, (short) 1,num+2 , (short) 1));sheet.addMergedRegion(new Region(3, (short) 0, num+2, (short) 0));sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) (headers.length)));// 指定合并区域HSSFRow rowHeader = sheet.createRow(0);HSSFCell cellHeader = rowHeader.createCell((short) 0); // 只能往第一格子写数据,然后应用样式,就可以水平垂直居中HSSFRichTextString textHeader = new HSSFRichTextString(title);cellHeader.setCellStyle(titleStyle);cellHeader.setCellValue(textHeader);sheet.addMergedRegion(new Region(1, (short) 0, 1, (short) (headers.length)));// 指定合并区域HSSFRow rowDate = sheet.createRow(1);HSSFCell cellDate = rowDate.createCell((short) 0); // 只能往第一格子写数据,然后应用样式,就可以水平垂直居中HSSFRichTextString textDate = new HSSFRichTextString(getDate);HSSFCellStyle dateStyle = workbook.createCellStyle();// 创建样式对象dateStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中dateStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中cellDate.setCellStyle(dateStyle);cellDate.setCellValue(textDate);HSSFRow row = sheet.createRow(2);for (int i = 0; i < headers.length; i++) {HSSFCell cell = row.createCell((short) i);cell.setCellStyle(style);HSSFRichTextString text = new HSSFRichTextString(headers[i]);cell.setCellValue(text);}HSSFCell cellTotal = row.createCell((short) headers.length);cellTotal.setCellStyle(style);HSSFRichTextString text = new HSSFRichTextString("合计");cellTotal.setCellValue(text);double totalV = 0;// 遍历集合数据,产生数据行if (result != null) {int index = 3; int indexNo = 1; String station = null;for (T t : result) {// Field[] fields = t.getClass().getDeclaredFields();row = sheet.createRow(index);index++;for (short i = 0; i < columns.length; i++) {HSSFCell cell = row.createCell(i);// Field field = fields[i];// String fieldName = field.getName();String fieldName = columns[i];Object value = null;if(fieldName.equals("dcsName")){String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);Class tCls = t.getClass();Method getMethod = tCls.getMethod(getMethodName, new Class[] {});// getMethod.getReturnType().isInstance(obj);value = getMethod.invoke(t, new Class[] {});}else if(fieldName.equals("dvalue")){String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);Class tCls = t.getClass();Method getMethod = tCls.getMethod(getMethodName, new Class[] {});// getMethod.getReturnType().isInstance(obj);value = getMethod.invoke(t, new Class[] {});double value2 = Double.parseDouble(value.toString());totalV += value2;}else{String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);Class tCls = t.getClass();Method getMethod = tCls.getMethod(getMethodName, new Class[] {});// getMethod.getReturnType().isInstance(obj);value = getMethod.invoke(t, new Class[] {});}String textValue = null;if (value == null) {textValue = "";} else if (value instanceof Date) {Date date = (Date) value;SimpleDateFormat sdf = new SimpleDateFormat(pattern);textValue = sdf.format(date);} else if (value instanceof byte[]) {// 有图片时,设置行高为60px;row.setHeightInPoints(60);// 设置图片所在列宽度为80px,注意这里单位的一个换算sheet.setColumnWidth(i, (short) (35.7 * 80));// sheet.autoSizeColumn(i);byte[] bsValue = (byte[]) value;HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, (short) 6, index, (short) 6,index);anchor.setAnchorType(2);patriarch.createPicture(anchor, workbook.addPicture(bsValue, HSSFWorkbook.PICTURE_TYPE_JPEG));} else {// 其它数据类型都当作字符串简单处理textValue = value.toString();}if (textValue != null) {Pattern p = Pattern.compile("^//d+(//.//d+)?$");Matcher matcher = p.matcher(textValue);if (matcher.matches()) {// 是数字当作double处理cell.setCellValue(Double.parseDouble(textValue));} else {HSSFRichTextString richString = new HSSFRichTextString(textValue);// HSSFFont font3 = workbook.createFont();// font3.setColor(HSSFColor.BLUE.index);// richString.applyFont(font3);cell.setCellValue(richString);}}}}}HSSFCellStyle nowStyle = workbook.createCellStyle();// 创建样式对象nowStyle.setAlignment(HSSFCellStyle.VERTICAL_CENTER);// 水平居左nowStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中HSSFRow nowRow = sheet.getRow((short) 3); HSSFCell nowCell = nowRow.createCell((short) headers.length); nowCell.setCellStyle(nowStyle); if(totalV==0){ nowCell.setCellValue(0.0+""); }else{ nowCell.setCellValue(new java.text.DecimalFormat("#.0").format(totalV)); } sheet.addMergedRegion(new Region(3, (short)headers.length,num+2, (short)headers.length));HSSFRow noRow = sheet.getRow((short) 3); HSSFCell noCell = noRow.getCell((short) 0); noCell.setCellStyle(nowStyle); HSSFRow staRow = sheet.getRow((short) 3); HSSFCell staCell = staRow.getCell((short) 1); staCell.setCellStyle(nowStyle);workbook.write(out);out.flush();out.close();}}String title = "值报表信息";String getDate ;String[] headers=null;String[] headers = new String[]{ "名字", "值"};columns = new String[]{"indexNo", "value"};List<StoDataRecord> houseList;ExcelUitl<Entity> excelUtil = new ExcelUitl<Entity>();response.setHeader("Content-Disposition", "attachment;filename=" + new String((title + ".xls").getBytes(), "iso-8859-1"));OutputStream out = response.getOutputStream();excelUtil.exportoExcelForSumDvalue2(title, headers, columns, houseList, out);0 0
- 导出EXCEL
- Excel导出
- 导出Excel
- 导出EXCEL
- 导出Excel
- EXCEL导出
- 导出Excel
- 导出excel
- 导出excel
- EXCEL导出
- 导出excel
- 导出Excel
- Excel导出。
- 导出excel
- Excel 导出
- 导出excel
- 导出excel
- 导出excel
- 安卓基础DAY08 笔记
- 【分享】惊奇发现BT下载速度可以提高300%
- IPC机制(Android开发艺术探索读书笔记)
- android 介绍Retrofit的简单使用
- [Android]MPAndroidChart的实战使用讲解
- 导出Excel
- python fabric原来还有rsync
- springMvc接受日期类型参数处理
- 详解PHP正则表达式
- pyhive中 一些错误的地方
- 项目总结
- Android 获取Scanresult 实例 (隐藏构造方法)
- SearchView的用法
- iOS开发-- KVO的实现原理与具体应用
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
进入桂风起公众号
桂风起公众号
桂风
金桂飘香什么意思
金桂飘香成语解释
金桂飘香拼音
什么桂飘香
金桂飘香解释
秋风送爽金桂飘香
金桂飘香词语解释
金桂飘香造句三年级
什么桂飘香成语
桂飘香前一个字
金桂飘香是什么意思
金桂飘香是描写哪个季节
金桂飘香是什么季节的
金桂飘香的意思
黄梅飘香
桂香园
桂陵之战和马陵之战
清炖桂鱼汤的做法大全
桂鱼苗批发
丁桂鱼苗
桂鱼苗多少钱一斤
桃丝熊手链
桃丝熊项链
桃丝熊香水
桃丝熊
桃丽丝
桃乃香
桃之助必须死
真面目屋isao罗宾娜美桃之助
桃乐丝
桃乐丝的旅程
桃乐丝葡萄酒
团购桃乐丝葡萄酒
桃乐丝葡萄酒特卖
魔角侦探桃乐丝
桃乐丝英文
桃乐丝图片
桃乐丝红酒