本项目基于SSM框架,简单封装了Excel批量导入导出功能,需要建数据库表将数据导入到表中,查询遍历出数据导出Excel,下一篇文章介绍下不用建数据库表一键导入导出Excel(点击跳转),不过这样只适用于对导入的Excel表进行转换。
一、下载poi jar包:
    点这里下载:poi 3.8/3.9/3.10三个版本下载
                        poi 3.17最新版本下载
二、基本操作步骤:   
首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(页/表)(HSSFSheet)组成,一个sheet是由多个row(行)(HSSFRow)组成,一个row是由多个cell(单元格)(HSSFCell)组成。
1、用HSSFWorkbook打开或者创建“Excel文件对象”
2、用HSSFWorkbook对象返回或者创建Sheet对象
3、用Sheet对象返回行对象,用行对象得到Cell对象
4、对Cell对象读写。

三、封装Excel工具类ImportExcelUtil

public class ImportExcelUtil {private final static String Excel_2003 = ".xls"; //2003 版本的excelprivate final static String Excel_2007 = ".xlsx"; //2007 版本的excel/*** @param in* @param fileName* @param columNum 自定义列数* @return* */public List<List<Object>> getBankListByExcel(InputStream in,String fileName) throws Exception{List<List<Object>> list = null;//创建Excel工作簿Workbook work = this.getWorkbook(in, fileName);if(work == null) {throw new Exception("创建Excel工作簿为空!");}Sheet sheet = null;Row row = null;Cell cell = null;list = new ArrayList<List<Object>>();//遍历Excel中的所有sheetfor(int i = 0; i<work.getNumberOfSheets(); i++) {sheet = work.getSheetAt(i);if(sheet == null) {continue;}//遍历当前sheet中的所有行//int totalRow = sheet.getPhysicalNumberOfRows();//如果excel有格式,这种方式取值不准确int totalRow = sheet.getPhysicalNumberOfRows();for(int j = sheet.getFirstRowNum(); j<totalRow; j++) {row = sheet.getRow(j);if(!isRowEmpty(row)) {//if(row != null && !"".equals(row)) {//获取第一个单元格的数据是否存在Cell fristCell=row.getCell(0);if(fristCell!=null){//遍历所有的列List<Object> li = new ArrayList<Object>();//int totalColum = row.getLastCellNum();for(int y = row.getFirstCellNum(); y<row.getLastCellNum(); y++) {cell = row.getCell(y);String callCal = this.getCellValue(cell)+"";li.add(callCal);}list.add(li);}}else if(isRowEmpty(row)){continue;}}}in.close();return list;}/*** 判断行是否为空* @param row* @return*/public static boolean isRowEmpty(Row row) {for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) {Cell cell = row.getCell(c);if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK)return false;}return true;}/*** 描述:根据文件后缀,自动适应上传文件的版本* @param inStr,fileName* @return* @throws Exception* */public Workbook getWorkbook(InputStream inStr,String fileName) throws Exception {Workbook work = null;String fileType = fileName.substring(fileName.lastIndexOf("."));if(Excel_2003.equals(fileType)){work=new HSSFWorkbook(inStr);//2003 版本的excel}else if(Excel_2007.equals(fileType)) {work=new XSSFWorkbook(inStr);//2007 版本的excel}else {throw new Exception("解析文件格式有误!");}return work;}/*** 描述:对表格中数值进行格式化* @param cell* @return* */public Object getCellValue(Cell cell) {/*Object value = null;DecimalFormat df1 = new DecimalFormat("0.00");//格式化number,string字符SimpleDateFormat sdf = new  SimpleDateFormat("yyy-MM-dd");//日期格式化DecimalFormat df2 = new DecimalFormat("0.00");//格式化数字if(cell !=null && !"".equals(cell)) {switch (cell.getCellType()) {case Cell.CELL_TYPE_STRING:value = cell.getRichStringCellValue().getString();break;case Cell.CELL_TYPE_NUMERIC:if("General".equals(cell.getCellStyle().getDataFormatString())) {value = df1.format(cell.getNumericCellValue());}else if("m/d/yy".equals(cell.getCellStyle().getDataFormatString())) {value = sdf.format(cell.getDateCellValue());}else if(HSSFDateUtil.isCellDateFormatted(cell)){Date date = cell.getDateCellValue();value = sdf.format(date);                }else {value = df2.format(cell.getNumericCellValue());}break;case Cell.CELL_TYPE_BOOLEAN:value = cell.getBooleanCellValue();break;case Cell.CELL_TYPE_BLANK:value = "";break;default:break;}}      return value;*/String result = new String();  switch (cell.getCellType()) {  case HSSFCell.CELL_TYPE_FORMULA:  //Excel公式try {  result = String.valueOf(cell.getNumericCellValue());  } catch (IllegalStateException e) {  result = String.valueOf(cell.getRichStringCellValue());}  break;case HSSFCell.CELL_TYPE_NUMERIC:// 数字类型  if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式  SimpleDateFormat sdf;  if (cell.getCellStyle().getDataFormat() == HSSFDataFormat  .getBuiltinFormat("h:mm")) {  sdf = new SimpleDateFormat("HH:mm");  } else {// 日期  sdf = new SimpleDateFormat("yyyy-MM-dd");  }  Date date = cell.getDateCellValue();  result = sdf.format(date);  } else if (cell.getCellStyle().getDataFormat() == 58) {  // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58)  SimpleDateFormat sdf = new SimpleDateFormat("M月d日");  double value = cell.getNumericCellValue();  Date date = org.apache.poi.ss.usermodel.DateUtil  .getJavaDate(value);  result = sdf.format(date);  } else {  double value = cell.getNumericCellValue();  CellStyle style = cell.getCellStyle();  DecimalFormat format = new DecimalFormat();  String temp = style.getDataFormatString();  // 单元格设置成常规  if (temp.equals("General")) {  format.applyPattern("#.##");  }  result = format.format(value);  }  break;  case HSSFCell.CELL_TYPE_STRING:// String类型  result = cell.getRichStringCellValue().toString();  break;  case HSSFCell.CELL_TYPE_BLANK:  result = "";  default:  result = "";  break;  }  return result;  }public String getFormat(String str) {if(str.equals("null")) {str="";return str;}else{return str;} }public Integer getFormats(Integer str) {if(str==null) {str=0;return str;}else{return str;}  }/*** 获取字符串中的数字订单号、数字金额等,如从"USD 374.69"中获取到374.69、从“交易单号:66666666666”获取到66666666666* @param receiptAmountString* @return*/public static String getFormatNumber(String str){str = str.trim();Pattern p = Pattern.compile("[0-9]");int indexNum = 0;int lenght = str.length();String num = "";for(int i=0;i<lenght;i++){num += str.charAt(i);Matcher m = p.matcher(num);if(m.find()){indexNum = i;break;}}String formatNumber = str.substring(indexNum,lenght);return formatNumber;}
}

四、控制层Controller导入导出

解决:MultipartFile文件或者图片上传一直为null问题

        /*** 导入销售订单数据* @param myFile* @param respon* @return* @throws IOException*/@RequiresPermissions("orderexcel:orderexcel:edit")@RequestMapping(value = "import", method=RequestMethod.POST)public String importFile(Orderexcel order, @RequestParam(value="file",required=false)MultipartFile myFile,HttpServletResponse respon,RedirectAttributes redirectAttributes)throws IOException {try {//先删除数据库原有的数据orderexcelService.deleteAll(order);ImportExcelUtil util = new ImportExcelUtil();InputStream input = null;List<List<Object>> lists = null;if (myFile.isEmpty()) {addMessage(redirectAttributes, "导入文件为空,请先添加Excel文件!");} else {// 如果错误为0String fileName = myFile.getOriginalFilename();input = myFile.getInputStream();lists = util.getBankListByExcel(input, fileName);input.close();// 循环将excel中的数据存入库for (int i = 1; i < lists.size(); i++) {List<Object> list = lists.get(i);Orderexcel orderexcel = new Orderexcel();orderexcel.setDate(util.getFormat(String.valueOf(list.get(0))));orderexcel.setOrdernumber(util.getFormat(String.valueOf(list.get(1))));orderexcel.setInternumber(util.getFormat(String.valueOf(list.get(2))));orderexcel.setCountrynumber(util.getFormat(String.valueOf(list.get(3))));orderexcel.setTevonumber(util.getFormat(String.valueOf(list.get(4))));orderexcel.setCustomernumber(util.getFormat(String.valueOf(list.get(5))));orderexcel.setRemarks(util.getFormat(String.valueOf(list.get(6))));orderexcel.setProductnumber(util.getFormat(String.valueOf(list.get(7))));orderexcel.setSku(util.getFormat(String.valueOf(list.get(8))));orderexcel.setNumber(util.getFormat(String.valueOf(list.get(9))));orderexcel.setTaxprice(util.getFormat(String.valueOf(list.get(10))));orderexcel.setTotalprice(util.getFormat(String.valueOf(list.get(11))));orderexcel.setCurrency(util.getFormat(String.valueOf(list.get(12))));//币种orderexcel.setExchangerate(util.getFormat(String.valueOf(list.get(13))));//汇率orderexcel.setAddress(util.getFormat(String.valueOf(list.get(14))));//地址orderexcel.setCountry(util.getFormat(String.valueOf(list.get(15))));//国家orderexcel.setPlug(util.getFormat(String.valueOf(list.get(16))));orderexcel.setInterfreightforwarder(util.getFormat(String.valueOf(list.get(17))));orderexcel.setCountryfreightforwarder(util.getFormat(String.valueOf(list.get(18))));orderexcel.setSalesmannumber(util.getFormat(String.valueOf(list.get(19))));orderexcel.setSalesman(util.getFormat(String.valueOf(list.get(20))));orderexcel.setIntercoursenumber(util.getFormat(String.valueOf(list.get(21))));orderexcel.setIntercourse(util.getFormat(String.valueOf(list.get(22))));orderexcel.setOfficenumber(util.getFormat(String.valueOf(list.get(23))));orderexcel.setWarehousenumber(util.getFormat(String.valueOf(list.get(24))));//仓库编码orderexcelService.save(orderexcel);}}} catch (Exception e) {e.printStackTrace();addMessage(redirectAttributes, "导入文件异常请检查Excel文件!");}return "redirect:" + adminPath + "/orderexcel/orderexcel/list?repage";}/*** 导出跟单信息Excel表* * @author * */@RequiresPermissions("sys:user:view")@RequestMapping(value = "export", method=RequestMethod.POST)public void exportallDocumentaryExcel(Orderexcel orderexcel,HttpServletResponse response, HttpServletRequest res,RedirectAttributes redirectAttributes) throws IOException {try {List<Orderexcel> docuList = orderexcelService.findList(orderexcel);if (docuList.size() == 0) {addMessage(redirectAttributes, "未查到数据,请先导入Excel文件");} else {// 在内存中创建一个Excel文件,通过输出流写到客户端提供下载// 内存中保留 10000 条数据,以免内存溢出,其余写入 硬盘SXSSFWorkbook workbook = new SXSSFWorkbook(10000);CellStyle style = workbook.createCellStyle();style.setAlignment(XSSFCellStyle.ALIGN_CENTER);//SXSSFWorkbook方式的居中// 创建一个sheet页SXSSFSheet sheet = (SXSSFSheet) workbook.createSheet("销售订单");// 分别设置Excel列的宽度/*sheet.setColumnWidth(0, 100 * 40); // 单据日期*/// 创建标题SXSSFRow headRow = (SXSSFRow) sheet.createRow(0);headRow.createCell(0).setCellValue("单据日期");headRow.createCell(1).setCellValue("单据编号");headRow.createCell(2).setCellValue("客户编码");headRow.createCell(3).setCellValue("客户");headRow.createCell(4).setCellValue("结算客户编码");headRow.createCell(5).setCellValue("结算客户");headRow.createCell(6).setCellValue("部门编码");headRow.createCell(7).setCellValue("部门");headRow.createCell(8).setCellValue("业务员编码");headRow.createCell(9).setCellValue("业务员");headRow.createCell(10).setCellValue("币种代码");headRow.createCell(11).setCellValue("币种");headRow.createCell(12).setCellValue("汇率");headRow.createCell(13).setCellValue("运输方式");headRow.createCell(14).setCellValue("送货地址");headRow.createCell(15).setCellValue("联系人");headRow.createCell(16).setCellValue("联系电话");headRow.createCell(17).setCellValue("客户手机号");headRow.createCell(18).setCellValue("合同号");headRow.createCell(19).setCellValue("收款方式");headRow.createCell(20).setCellValue("外部单据号");headRow.createCell(21).setCellValue("按仓库拆单出库"); headRow.createCell(22).setCellValue("国际单号");headRow.createCell(23).setCellValue("内部单号");headRow.createCell(24).setCellValue("备注");headRow.createCell(25).setCellValue("仓库编码");headRow.createCell(26).setCellValue("仓库");headRow.createCell(27).setCellValue("项目编码");headRow.createCell(28).setCellValue("项目");headRow.createCell(29).setCellValue("存货编码");headRow.createCell(30).setCellValue("存货名称");headRow.createCell(31).setCellValue("销售单位");headRow.createCell(32).setCellValue("数量");headRow.createCell(33).setCellValue("报价");headRow.createCell(34).setCellValue("折扣%");headRow.createCell(35).setCellValue("税率%");headRow.createCell(36).setCellValue("含税单价");headRow.createCell(37).setCellValue("含税金额");headRow.createCell(38).setCellValue("预计交货日期");headRow.createCell(39).setCellValue("赠品");headRow.createCell(40).setCellValue("备注");headRow.createCell(41).setCellValue("国家");headRow.createCell(42).setCellValue("货代");headRow.createCell(43).setCellValue("客户单号");for (Orderexcel docu : docuList) {// 创建行SXSSFRow dataRow = (SXSSFRow) sheet.createRow(sheet.getLastRowNum() + 1);dataRow.createCell(0).setCellValue(docu.getDate());//单据日期dataRow.createCell(1).setCellValue(docu.getOrdernumber());//单据编号(内部单号)dataRow.createCell(2).setCellValue(docu.getIntercoursenumber());//往来单位编码(客户编码)(结算客户编码)dataRow.createCell(3).setCellValue("");//客户dataRow.createCell(4).setCellValue(docu.getIntercoursenumber());//结算客户编码dataRow.createCell(5).setCellValue("");//结算客户dataRow.createCell(6).setCellValue(docu.getOfficenumber());//部门编码dataRow.createCell(7).setCellValue("");//部门dataRow.createCell(8).setCellValue(docu.getSalesmannumber());//业务员编码dataRow.createCell(9).setCellValue(docu.getSalesman());//业务员dataRow.createCell(10).setCellValue(docu.getCurrency());//币种代码dataRow.createCell(11).setCellValue("");//币种dataRow.createCell(12).setCellValue(docu.getExchangerate());//汇率dataRow.createCell(13).setCellValue("");//运输方式dataRow.createCell(14).setCellValue("");//送货地址dataRow.createCell(15).setCellValue("");//联系人dataRow.createCell(16).setCellValue("");//联系电话dataRow.createCell(17).setCellValue("");//客户手机号dataRow.createCell(18).setCellValue("");//合同号dataRow.createCell(19).setCellValue("其它");//收款方式dataRow.createCell(20).setCellValue("");//外部单据号dataRow.createCell(21).setCellValue("");//按仓库拆单出库dataRow.createCell(22).setCellValue("");//国际单号dataRow.createCell(23).setCellValue(docu.getnumber());//内部单号dataRow.createCell(24).setCellValue(docu.getRemarks());//备注dataRow.createCell(25).setCellValue(docu.getWarehousenumber());//仓库编码dataRow.createCell(26).setCellValue("");//仓库dataRow.createCell(27).setCellValue("");//项目编码dataRow.createCell(28).setCellValue("");//项目dataRow.createCell(29).setCellValue(docu.getSku());//存货编码dataRow.createCell(30).setCellValue("");//存货名称dataRow.createCell(31).setCellValue("个");//销售单位dataRow.createCell(32).setCellValue(docu.getNumber());//数量dataRow.createCell(33).setCellValue("");//报价dataRow.createCell(34).setCellValue("");//折扣%dataRow.createCell(35).setCellValue("0");//税率%dataRow.createCell(36).setCellValue(docu.getTaxprice());//含税单价dataRow.createCell(37).setCellValue(docu.getTotalprice());//含税金额dataRow.createCell(38).setCellValue("");//预计交货日期dataRow.createCell(39).setCellValue("");//赠品dataRow.createCell(40).setCellValue("");//备注dataRow.createCell(41).setCellValue(docu.getCountry());//国家dataRow.createCell(42).setCellValue(docu.getInterfreightforwarder());//货代?国际dataRow.createCell(43).setCellValue(docu.getCustomernumber());//客户单号}// 设置Excel文件名,并以中文进行编码String codedFileName = new String("销售订单".getBytes("gbk"), "iso-8859-1");response.setHeader("Content-Disposition", "attachment;filename=" + codedFileName + DateUtils.getDate("yyyyMMddHHmmss") +".xlsx");// 响应类型,编码response.setContentType("application/octet-stream;charset=UTF-8");// 形成输出流OutputStream osOut = response.getOutputStream();// 将指定的字节写入此输出流workbook.write(osOut);// 刷新此输出流并强制将所有缓冲的输出字节被写出osOut.flush();// 关闭流osOut.close();/** dispose of temporary files backing this workbook on disk* 处理在磁盘上备份此工作簿的临时文件 SXSSF分配临时文件,您必须始终清除显式,通过调用dispose方法*/workbook.dispose();}} catch (Exception e) {e.printStackTrace();addMessage(redirectAttributes, "导出用户失败!失败信息:"+e.getMessage());}}

五、jsp页面

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<html>
<head><title>销售订单表导入导出管理</title><meta name="decorator" content="default"/><script type="text/javascript">/* $(document).ready(function() {}); */$(document).ready(function() {$("#btnExport").click(function(){top.$.jBox.confirm("确认要导出用户数据吗?","系统提示",function(v,h,f){if(v=="ok"){$("#searchForm").attr("action","${ctx}/orderexcel/orderexcel/export");$("#searchForm").submit();}},{buttonsFocus:1});top.$('.jbox-body .jbox-icon').css('top','55px');});$("#btnImport").click(function(){$.jBox($("#importBox").html(), {title:"导入数据", buttons:{"关闭":true}, bottomText:"导入文件不能超过5M,仅允许导入“xls”或“xlsx”格式文件!"});});});function page(n,s){$("#pageNo").val(n);$("#pageSize").val(s);$("#searchForm").submit();return false;}</script>
</head>
<body><div id="importBox" class="hide"><form id="importForm" action="${ctx}/orderexcel/orderexcel/import" method="post" enctype="multipart/form-data"class="form-search" style="padding-left:20px;text-align:center;" onsubmit="loading('正在导入,请稍等...');"><br/><input id="uploadFile" name="file" type="file" style="width:330px"/><br/><br/>  <input id="btnImportSubmit" class="btn btn-primary" type="submit" value="   导    入   "/></form></div><ul class="nav nav-tabs"><li class="active"><a href="${ctx}/orderexcel/orderexcel/">销售订单列表</a></li></ul><form:form id="searchForm" modelAttribute="orderexcel" action="${ctx}/orderexcel/orderexcel/" method="post" class="breadcrumb form-search"><input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/><input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/><ul class="ul-form"><li><input id="btnImport" class="btn btn-primary" type="button" value="导入"/><input id="btnExport" class="btn btn-primary" type="button" value="导出"/></li><li class="clearfix"></li></ul></form:form><sys:message content="${message}"/><table id="contentTable" class="table table-striped table-bordered table-condensed"><thead><tr><th>日期</th><th>单据编号</th><th>国际单号</th><th>国内单号</th><th>内部单号</th><th>客户单号</th><th>备注</th><th>产品型号</th><th>库存编码</th><th>数量</th><th>含税单价</th><th>金额</th><th>币种</th><th>汇率</th><th>地址</th><th>国家</th><th>插头</th><th>国际货代</th><th>国内货代</th><th>业务员编码</th><th>业务员</th><th>往来单位编码</th><th>往来单位</th><th>部门编码</th><th>仓库编码</th><!-- <th>创建时间</th> --><%-- <shiro:hasPermission name="orderexcel:orderexcel:edit"><th>操作</th></shiro:hasPermission> --%></tr></thead><tbody><c:forEach items="${page.list}" var="orderexcel"><tr><td>${orderexcel.date}</td><td>${orderexcel.ordernumber}</td><td>${orderexcel.internumber}</td><td>${orderexcel.countrynumber}</td><td>${orderexcel.number}</td><td>${orderexcel.customernumber}</td><td>${orderexcel.remarks}</td><td>${orderexcel.productnumber}</td><td>${orderexcel.sku}</td><td>${orderexcel.number}</td><td>${orderexcel.taxprice}</td><td>${orderexcel.totalprice}</td><td>${orderexcel.currency}</td><td>${orderexcel.exchangerate}</td><td>${orderexcel.address}</td><td>${orderexcel.country}</td><td>${orderexcel.plug}</td><td>${orderexcel.interfreightforwarder}</td><td>${orderexcel.countryfreightforwarder}</td><td>${orderexcel.salesmannumber}</td><td>${orderexcel.salesman}</td><td>${orderexcel.intercoursenumber}</td><td>${orderexcel.intercourse}</td><td>${orderexcel.officenumber}</td><td>${orderexcel.warehousenumber}</td></tr></c:forEach></tbody></table><div class="pagination">${page}</div>
</body>
</html>

poi批量导入导出Excel(一、需要建数据库表)相关推荐

  1. 批量导入/导出Excel文件(Python+Matlab)

    简单整理了下批量导入/导出Excel的Python和Matlab代码. Matlab 连续数字型.xlsx文件(如file_1.xlsx, file_2.xlsx, file_3.xlsx) clc, ...

  2. JAVA语言(POI数据导入导出Excel)

    POI数据导入导出Excel(样式可以自己设置) //----------------------------Controller层 --------------------------------- ...

  3. POI实现导入导出excel

    poi在日常的导入导出中是比较常用到的,最近也总结了下接触到的poi相关的导入导出的一些代码,有问题可以指出: package com.poi;import km.org.apache.poi.hss ...

  4. poi/jxls导入/导出Excel工具类(支持2003和2007)

    1.ExportUtil导出工具类(根据模板导出),支持2003/2007不同excel格式文件 package org.nercita.bcp.util;import java.io.FileInp ...

  5. C# 读写excel 用于导入数据库 批量导入导出excel

    给大家介绍一款控件,Aspose.Cells.dll,相当强大,几乎就是excel,支持excel2003,excel2007等格式文件.excel2010以上,没有经过测试,估计也是可以. Aspo ...

  6. java io导出excel表格_Java IO 导入导出Excel表格

    1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...

  7. java jdbc excel_详解poi+springmvc+springjdbc导入导出excel实例

    工作中常遇到导入导出excel的需求,本獂有一简答实例与大家分享. 废话不多说, 1.所需jar包: 2.前端代码: ieport.jsp: 导入\导出页面 function exportFile() ...

  8. CATIA批量导入导出数据到EXCEL

    CATIA批量导入导出数据到EXCEL 序言 一.EXCEL数据点批量导入到CATIA 二.CATIA数据点批量导入到EXCEL 三.VB批量输出点到EXCEL 序言 工作中,由于测量基准和建模基准不 ...

  9. POI导入导出excel表

            在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印. Apache POI是Apache软件基金会 ...

  10. SpringBoot使用poi或EasyExcel导入导出Excel文件

    使用poi导入导出Excel 首先引入poi依赖包 03版本的Excel和07版本的Excel所需要的依赖不同,都需要导入. 记录问题: 最初导入的poi包为3.6版本.WorkBook类和Sheet ...

最新文章

  1. 进击的java(2)
  2. 打印机更换感光鼓单元k_SOHO打印机基础培训(成像原理)
  3. OpenCV AKAZE本地特征匹配
  4. Sharepoint 自定义字段类型
  5. Notepad++远程连接Linux系统
  6. 【BZOJ】【1015】 【JSOI2008】星球大战starwar
  7. 多分类的梯度以及logsumexp
  8. 精英二代手柄测试软件,微软精英手柄2代评测 继续引领行业标准
  9. css制作类似优惠券的卡片样式(vue)
  10. iOS开发面试和底层学习视频整理合集
  11. 百度收录-如何使用API提交
  12. 【应用安全】“我的QQ被盗,请大家不要相信任何消息.......”
  13. flea-jersey使用之Flea RESTful接口服务端接入
  14. PPT文件无法打开处理
  15. SaaS二月寒冬、传统IT厂商逆袭与重新定义云计算
  16. Vivo手机安装谷歌Play商店,安装服务框架谷歌Google,支持X90,X80,X70,X60,s系列,IQOO
  17. 以三维视频融合为核心的[点卯.增强虚拟全景平台]免费版,在智慧城市和安防监控行业中的应用
  18. Python基于pyzbar、opencv、pyqt5库,实现二维码识别 gui 应用程序开发
  19. 45 年前,我国曾提前 20 天预测出 7.3 级的地震
  20. java后台判断请求来自移动端访问还是PC端访问

热门文章

  1. 大学生英语跨文化交际阅读课程 Unit6 Text A
  2. 两个分数相加(结果最简)
  3. Words Accumlation - Day 4
  4. [SSL_CHX][2021-8-18]角谷猜想
  5. 苹果执行请求时出错_苹果执行请求时出错
  6. 交换机之恢复重置设备密码
  7. C/C++函数调用约定(基于X86架构下)
  8. 网易云音乐Eason Chen 歌词词云
  9. 201871010132——张潇潇《面向对象程序设计JAVA》第二周学习总结
  10. 【6GHz矩形贴片天线设计与分析】