泛微Excel文件导出

  • 说明
    • 前端代码
      • 前端页面现有的id和name标准规格、配置页面:
      • js代码:
      • js代码注意点:
    • 后端代码
      • jsp代码获取到数据并把数据以Excel形式表现出来
      • FL_ExcelExportDetailUtil.jsp文件
      • GetTextByColumn.java文件
      • 下面是查询的sql

说明

这个功能是基于泛微8.0平台,以js代码,调用后端jsp动态导出Excel文件。

前端代码

前端页面现有的id和name标准规格、配置页面:

js代码:

//明细1导出
var str1="<input type='button' class='e8_btn_top_first' οnclick='getDetail(1);' value='导出明细' style='font-size:18px; height:30px; width:124px;'>";
jQuery(".mx_botton1").html(str1);function getDetail(tableNum){var requestId=jQuery("#requestid").val();if(!!requestId){var fileName="执行预算申请";var columns="yskm,fl,ndyskyje,ndysysq,jtsx,kszxrq,jszxrq,dj1,yhzk,zhdj,sl2,dw,xjy,yfbl,yfk,hzdw,bz"; // 注意点:这里字段的顺序就是你导出excel文件字段的顺序。location.href="/path/FL_ExcelExportDetailUtil.jsp?requestId="+requestId+"&fileName="+fileName+"&tableNum="+tableNum+"&columns="+columns;}else{window.top.Dialog.alert("请先保存!");}}

js代码注意点:

后端代码

jsp代码获取到数据并把数据以Excel形式表现出来

把html页面以EXCEL形式显示时:
<%@ page language="java" contentType="application/vnd.ms-excel; charset=UTF-8" %>关键代码:response.setHeader("Content-disposition","attachment;filename="+new String(fileName.getBytes("GBK"),"iso8859-1")+requestmark+".xls");
// 把xls文件信息,把响应头的格式存进去。

FL_ExcelExportDetailUtil.jsp文件

<%@page import="weaver.general.BaseBean"%>
<%@ page language="java" contentType="application/vnd.ms-excel; charset=UTF-8" %>
<%@ page import="weaver.systeminfo.*,java.util.*,weaver.hrm.*" %>
<%@ page import="weaver.interfaces.workflow.action.GetTextByColumn" %>
<%@ page import="weaver.general.Util,weaver.hrm.common.*" %>
<%@ page import="weaver.general.TimeUtil" %>
<%@ page import="weaver.conn.RecordSet" %>
<!-- modified by wcd 2014-07-24 [E7 to E8] -->
<jsp:useBean id="ResourceComInfo" class="weaver.hrm.resource.ResourceComInfo" scope="page"/>
<jsp:useBean id="DepartmentComInfo" class="weaver.hrm.company.DepartmentComInfo" scope="page"/>
<jsp:useBean id="format" class="weaver.hrm.common.SplitPageTagFormat" scope="page"/>
<jsp:useBean id="strUtil" class="weaver.common.StringUtil" scope="page"/>
<jsp:useBean id="dateUtil" class="weaver.common.DateUtil" scope="page"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>
<!--
td{font-size:12px}
.title{font-weight:bold;font-size:20px}
requestId="+requestId+"&fileName="+fileName+"&tableNum="+tableNum+"&columns="+columns;
-->
</style>
<%BaseBean bas=new BaseBean();RecordSet rs=new RecordSet();RecordSet rs1=new RecordSet();GetTextByColumn gtbc=new GetTextByColumn();List<Map<String,String>> detailMap=new ArrayList<Map<String,String>>();String requestid = Util.null2String(request.getParameter("requestId"));String tableNum  = Util.null2String(request.getParameter("tableNum"));String columns   = Util.null2String(request.getParameter("columns"));String fileName  = Util.null2String(request.getParameter("fileName"));
bas.writeLog("参数:requestid="+requestid+",明细表="+tableNum);    String[] fielnames=columns.split("\\,");//根据requestId获取表单名称            // 表单名称、工作流id、文件编号String sql1="select tablename,c.workflowid,c.requestmark from workflow_bill a inner join workflow_base b on a.id=b.formid ,"+"workflow_requestbase c where b.id=c.workflowid and c.requestid='"+requestid+"'";rs.executeSql(sql1);rs.next();String mainTable=Util.null2String(rs.getString(1));//表单名称String workflowId=Util.null2String(rs.getString(2));//流程IDString requestmark = Util.null2String(rs.getString(3));//流程编号//获得明细表数据if(tableNum.length()>0){String detailTable=mainTable+"_dt"+tableNum;//tableNum的值:1,2,3......NString sql2="select * from "+detailTable+" a, "+mainTable+" b where a.mainid=b.id and b.requestid='"+requestid+"' order by a.id";
bas.writeLog("获取明细数据sql:"+sql2);     rs.executeSql(sql2);int index=0;while(rs.next()){Map<String,String> map=new LinkedHashMap<String, String>();map.put("序号", index+1+"");//序号for(String fielname:fielnames){String value=Util.null2String(rs.getString(fielname));// 用表格头的名字获取到数据String sql3="select h.labelname from workflow_billfield t,workflow_base w,HtmlLabelInfo h where w.formid = t.billid " +"and t.fieldlabel = h.indexid and h.languageid = 7 and t.fieldname='"+fielname+"' and w.id = '"+workflowId+"'";rs1.executeSql(sql3);rs1.next();String columnName=Util.null2String(rs1.getString(1));String val=gtbc.getData(workflowId, fielname, detailTable, value);map.put(columnName, val);}detailMap.add(index,map);index++;}}String cmd="DSproductModelExcel";bas.writeLog("打印集合"+detailMap.toString());response.setHeader("Content-disposition","attachment;filename="+new String(fileName.getBytes("GBK"),"iso8859-1")+requestmark+".xls");
%>
<%if(cmd.equals("DSproductModelExcel")){%>
<input type="hidden" id="page" name="page" value="">
<table  border=1  bordercolor=black style="border-collapse:collapse;" width="100%" ><COLGROUP>
<%      // 循环多少列数并定下宽度Map<String,String> map1=detailMap.get(0);int k=0;for(String key:map1.keySet()){%><COL width="7%">
<%           bas.writeLog("循环COL"+k+1);k++;}
%></COLGROUP><tbody><tr style="background-color:#999999">
<%           int h=0;for(String key:map1.keySet()){%><td style="HEIGHT: 38px" rowspan=1 align="center"><%=key%></td>
<%
bas.writeLog("循环表头td"+key);h++;}
%></tr>
<%for(int i=0;i<detailMap.size();i++){Map<String,String> map2=detailMap.get(i);int j=0;
%><tr>
<%
bas.writeLog("循环tr"+i+1);for(String key:map2.keySet()){String value=map2.get(key);
%>   <td align="center"><%=value%></td>
<%
bas.writeLog("循环表体td"+value);j++;}
%></tr>
<%}
%></tbody>
</table>
<%}
%>

GetTextByColumn.java文件

package weaver.interfaces.workflow.action;import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
/*** 根据字段和值获取Text输出* @date 2018年11月28日*/
public class GetTextByColumn extends BaseBean {public String getData(String workflowId,String column,String dt,String value) {RecordSet rs = new RecordSet();String result="";String sql0="";if(value.length()>0) {String SQL="select  b.fieldname  ,b.id  ,h.labelname , b.fielddbtype ,b.detailtable,b.fieldhtmltype,b.type "+"from  workflow_billfield b,workflow_base w,HtmlLabelInfo h "+"where w.formid = b.billid and b.fieldlabel = h.indexid and h.languageid = 7 and w.id = '"+workflowId+"' "+"and b.fieldname='"+column+"' ";if(dt.length()>0) {//明细表sql0 ="and b.detailtable='"+dt+"'";}else {//主表sql0 ="and b.detailtable is null";}rs.executeSql(SQL+sql0);rs.next();String fieldname=Util.null2String(rs.getString("fieldname"));String fieldid=Util.null2String(rs.getString("id"));String labelname=Util.null2String(rs.getString("labelname"));String fielddbtype=Util.null2String(rs.getString("fielddbtype"));String fieldhtmltype=Util.null2String(rs.getString("fieldhtmltype"));String type=Util.null2String(rs.getString("type"));if(fieldhtmltype.equals("1")||fieldhtmltype.equals("2")) {//单行文本、多行文本result=value;}else if(fieldhtmltype.equals("3")) {//浏览按钮if(type.equals("1")) {//人力资源String sql1="select lastname from hrmresource where id='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("2")) {//日期result=value;}else if(type.equals("3")) {//会议室联系单}else if(type.equals("4")) {//部门String sql1="select departmentname from hrmdepartment where id='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("5")) {//仓库}else if(type.equals("6")) {//成本中心String sql1="select name from fnaCostCenter where id='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("7")) {//客户}else if(type.equals("8")) {//项目}else if(type.equals("9")) {//文档String sql="select a.imagefilename,a.filesize,a.imagefileid,b.docfiletype from imagefile a , docimagefile b where b.imagefileid=a.imagefileid and b.docid=";if(value.length()>0) {String[] ids=value.split("\\,");for(String id:ids) {rs.executeSql(sql+id);rs.next();String fileName=Util.null2String(rs.getString("imagefilename"));result +=result.length()>0?"</br>"+fileName:fileName;}}}else if(type.equals("10")) {//入库方式}else if(type.equals("11")) {//出库方式}else if(type.equals("12")) {//币种String sql1="select currencyname from fnacurrency where id='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("13")) {//资产种类}else if(type.equals("14")) {//科目-全部}else if(type.equals("15")) {//科目-明细}else if(type.equals("16")) {//流程String sql1="select requestname from workflow_requestbase where requestid='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("17")) {//多人力资源String sql1="select lastname from hrmresource where id in ("+value+")";rs.execute(sql1);while(rs.next()) {String val=Util.null2String(rs.getString(1));result +=result.length()>0?","+val:val;}}else if(type.equals("18")) {//多客户}else if(type.equals("19")) {//时间result=value;}else if(type.equals("20")) {//计划类型}else if(type.equals("21")) {//计划种类}else if(type.equals("22")) {//报销费用类型String sql1="select name from   fnabudgetfeetype where id='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("23")) {//资产}else if(type.equals("24")) {//职务/岗位String sql1="select jobtitlename from    hrmjobtitles where id='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("25")) {//资产组}else if(type.equals("26")) {//车辆}else if(type.equals("27")) {//应聘人}else if(type.equals("28")) {//会议}else if(type.equals("29")) {//奖惩种类}else if(type.equals("30")) {//学历}else if(type.equals("31")) {//用工性质}else if(type.equals("32")) {//培训安排}else if(type.equals("33")) {//加班类型}else if(type.equals("34")) {//请假类型}else if(type.equals("35")) {//业务合同}else if(type.equals("36")) {//合同性质}else if(type.equals("37")) {//多文档String sql="select a.imagefilename,a.filesize,a.imagefileid,b.docfiletype from imagefile a , docimagefile b where b.imagefileid=a.imagefileid and b.docid=";if(value.length()>0) {String[] ids=value.split("\\,");for(String id:ids) {rs.executeSql(sql+id);rs.next();String fileName=Util.null2String(rs.getString("imagefilename"));result +=result.length()>0?"</br>"+fileName:fileName;}}}else if(type.equals("38")) {//相关产品}else if(type.equals("52")) {//公文种类}else if(type.equals("53")) {//紧急程度}else if(type.equals("54")) {//秘密等级}else if(type.equals("55")) {//发文字号}else if(type.equals("56")) {//}else if(type.equals("57")) {//多部门String sql1="select departmentname from hrmdepartment where id in("+value+")";rs.execute(sql1);while(rs.next()) {String val=Util.null2String(rs.getString(1));result +=result.length()>0?","+val:val;}}else if(type.equals("58")) {//城市String sql1="select cityname from     hrmcity where id='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("59")) {//称呼}else if(type.equals("60")) {//客户类型}else if(type.equals("61")) {//客户描述}else if(type.equals("62")) {//客户规模}else if(type.equals("63")) {//行业}else if(type.equals("64")) {//}else if(type.equals("65")) {//多角色String sql1="select rolesmark from hrmroles where id in ("+value+")";rs.execute(sql1);while(rs.next()) {String val=Util.null2String(rs.getString(1));result +=result.length()>0?","+val:val;}}else if(type.equals("66")) {//}else if(type.equals("67")) {//}else if(type.equals("68")) {//}else if(type.equals("69")) {//计量单位String sql1="select unitname from lgcassetunit where id ='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("87")) {//会议室}else if(type.equals("89")) {//会议类型}else if(type.equals("118")) {//}else if(type.equals("119")) {//专业}else if(type.equals("124")) {//}else if(type.equals("125")) {//}else if(type.equals("126")) {//}else if(type.equals("129")) {//项目模板}else if(type.equals("134")) {//}else if(type.equals("135")) {//多项目}else if(type.equals("137")) {//车辆}else if(type.equals("141")) {//人力资源条件}else if(type.equals("142")) {//收(发)文单位}else if(type.equals("152")) {//多流程String sql1="select requestname from workflow_requestbase where requestid in ("+value+")";rs.execute(sql1);while(rs.next()) {String val=Util.null2String(rs.getString(1));result +=result.length()>0?"</br>"+val:val;}}else if(type.equals("160")) {//角色人员String sql1="select lastname from hrmresource where id in ("+value+")";rs.execute(sql1);while(rs.next()) {String val=Util.null2String(rs.getString(1));result +=result.length()>0?","+val:val;}}else if(type.equals("161")) {//自定义单选String unitname=fielddbtype.split("\\.")[1];String sql1="select searchbyid  from datashowset where showname='"+unitname+"'";rs.executeSql(sql1);rs.next();String sql2=Util.null2String(rs.getString("searchbyid"));rs.executeQuery(sql2, new Object[] {value});rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("162")) {//自定义多选String unitname=fielddbtype.split("\\.")[1];String sql1="select searchbyid  from datashowset where showname='"+unitname+"'";rs.executeSql(sql1);rs.next();String sql2=Util.null2String(rs.getString("searchbyid"));String[] ids=value.split("\\,");for(String id:ids) {rs.executeQuery(sql2, new Object[] {id});rs.next();String val=Util.null2String(rs.getString(1));result +=result.length()>0?",</br>"+val:val;}}else if(type.equals("164")) {//公司String sql1="select subcompanyname from hrmsubcompany where id='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("165")) {//分权单人力资源}else if(type.equals("166")) {//分权多人力资源}else if(type.equals("167")) {//分权单部门}else if(type.equals("168")) {//分权多部门}else if(type.equals("169")) {//分权单分部}else if(type.equals("170")) {//分权多分部}else if(type.equals("171")) {//归档流程String sql1="select requestname from workflow_requestbase where requestid='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("178")) {//年份result=value;}else if(type.equals("179")) {//资产资料}else if(type.equals("182")) {//单网上调查}else if(type.equals("184")) {//多会议室}else if(type.equals("194")) {//多分部String sql1="select subcompanyname from hrmsubcompany where id in ("+value+")";rs.execute(sql1);while(rs.next()) {String val=Util.null2String(rs.getString(1));result +=result.length()>0?","+val:val;}}else if(type.equals("226")) {//系统集成单选浏览按钮}else if(type.equals("244")) {//项目类型}else if(type.equals("245")) {//工作类型}else if(type.equals("251")) {//项目名称String sql1="select name from fnaCostCenter where id='"+value+"'";rs.execute(sql1);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("256")) {//自定义树形单选String mainid=value.split("_")[0];String detailid=value.split("_")[1];String sql1="select tablename,showfield from mode_customtreedetail where mainid='"+mainid+"'";rs.execute(sql1);rs.next();String tabl=Util.null2String(rs.getString("tablename"));String showfield=Util.null2String(rs.getString("showfield"));String sql2="select "+showfield+" from "+tabl+" where id='"+value+"'";rs.executeSql(sql2);rs.next();result=Util.null2String(rs.getString(1));}else if(type.equals("257")) {//自定义树形多选String[] ids=value.split("\\,");for(String id:ids) {String mainid=id.split("_")[0];String detailid=id.split("_")[1];String sql1="select tablename,showfield from mode_customtreedetail where mainid='"+mainid+"'";rs.execute(sql1);rs.next();String tabl=Util.null2String(rs.getString("tablename"));String showfield=Util.null2String(rs.getString("showfield"));String sql2="select "+showfield+" from "+tabl+" where id='"+id+"'";rs.executeSql(sql2);rs.next();String val=Util.null2String(rs.getString(1));result +=result.length()>0?","+val:val;}}else if(type.equals("259")) {//语言}else if(type.equals("260")) {//职称}else if(type.equals("262")) {//办公地点}else if(type.equals("263")) {//区县}else if(type.equals("268")) {//星期多选}else if(type.equals("269")) {//多提醒方式}else if(type.equals("270")) {//服务项目}else if(type.equals("274")) {//商机来源}else if(type.equals("278")) {//多岗位String sql1="select jobtitlename from    hrmjobtitles where id in ("+value+")";rs.execute(sql1);while(rs.next()) {String val=Util.null2String(rs.getString(1));result=result.length()>0?","+val:val;}}else if(type.equals("279")) {//合同}else if(type.equals("280")) {//班次}}else if(fieldhtmltype.equals("4")) {//Check框result=value;}else if(fieldhtmltype.equals("5")) {//选择框String sql8="select a.selectname from WORKFLOW_SELECTITEM a LEFT JOIN WORKFLOW_BILLFIELD b on b.id=a.fieldid ,WORKFLOW_BASE c"+ " where b.billid=c.formid and b.fieldhtmltype=5 and b.fieldname='"+column+"' and a.selectvalue='"+value+"' "+ "and c.id='"+workflowId+"'";rs.executeSql(sql8+sql0);rs.next();result=Util.null2String(rs.getString(1));}else if(fieldhtmltype.equals("6")) {//附件String sql9="select a.imagefilename,a.filesize,a.imagefileid,b.docfiletype from imagefile a , docimagefile b where b.imagefileid=a.imagefileid and b.docid=";if(value.length()>0) {String[] ids=value.split("\\,");for(String id:ids) {rs.executeSql(sql9+id);rs.next();String fileName=Util.null2String(rs.getString("imagefilename"));result +=result.length()>0?"</br>"+fileName:fileName;}}}}return result;}}

下面是查询的sql

select tablename,c.workflowid,c.requestmark from workflow_bill a inner join workflow_base b on a.id=b.formid ,workflow_requestbase c where b.id=c.workflowid and c.requestid=311305
-- 表单名称、工作流id、文件编号--获取明细数据sql:
select * from formtable_main_31_dt1 a, formtable_main_31 b where a.mainid=b.id and b.requestid='312081' order by a.id-- 查询字段 显示名
select h.labelname from workflow_billfield t,workflow_base w,HtmlLabelInfo h where w.formid = t.billid and t.fieldlabel = h.indexid and h.languageid = 7 and t.fieldname='yskm' and w.id = 2201-- 获取到  字段名,字段id,字段显示名,字段类型,表单名,字段类型,字段类型
select  b.fieldname  ,b.id  ,h.labelname , b.fielddbtype ,b.detailtable,b.fieldhtmltype,b.type from  workflow_billfield b,workflow_base w,HtmlLabelInfo h where w.formid = b.billid and b.fieldlabel = h.indexid and h.languageid = 7 and w.id = '2201' and b.fieldname='yskm'--and b.detailtable is nulland b.detailtable = 'formtable_main_31_dt1'

泛微Excel文件导出相关推荐

  1. excel文件导出相应数据统计内容

    这次完成了一个以excel文件导出相应数据统计内容的功能,选取其中的一个放在下面: 1.首先在资源文件夹下创建一个excel的package,并创建一个xlsx文件 创建的时候要注意版本兼容问题,20 ...

  2. 泛微E-Office文件上传漏洞(CNVD-2021-49104)

    泛微E-Office文件上传漏洞(CNVD-2021-49104) 漏洞描述 泛微e-office是泛微旗下的一款标准协同移动办公平台.由于 e-office 未能正确处理上传模块中的用户输入,攻击者 ...

  3. (php)泛微E-Office文件上传漏洞(原理分析+复现+批量检测)

    漏洞描述 泛微e-office是泛微旗下的一款标准协同移动办公平台. CNVD-2021-49104 由于 e-office 未能正确处理上传模块中的用户输入,攻击者可以通过该漏洞构造恶意的上传数据包 ...

  4. c#实现将Excel文件导出为csv和UTF8格式的txt文件

    工作中为了方便,经常使用excel表进行编辑,然后转换为程序用的csv和txt文件. 用c#做了个小工具,生成的exe文件放到需要转换的excel文件目录,可以实在自动读取该目录下的所有xlsx文件, ...

  5. Excel文件导出list对象

    Excel文件导出 excel导出xls.csv格式的list对象 1.Excel文件工具类 public class ExcelUtils {private static String sheetN ...

  6. 如何优雅地实现 Excel 文件导出功能?(阿里出品的 EasyExcel,安利一波)

    EasyExcel 前言 导出是后台管理系统的常用功能,当数据量特别大的时候会内存溢出和卡顿页面,曾经自己封装过一个导出,POI百万级大数据量EXCEL导出 采用了分批查询数据来避免内存溢出和使用SX ...

  7. Excel文件导出总结,包含大数据量的分批导出方式

    文章目录 需求背景 参考内容 导出方式 代码实现 Excel4J 普通导出 POI原生方式 普通导出 大数据量分批导出 依赖版本 实现思路 POI工具类 数据写入 调用测试 测试结果 一个小意外 Ea ...

  8. @excel注解_惊了!如何通过阿里 EasyExcel 7 行代码, 优雅地实现 Excel 文件导出功能?...

    目录 一.前言 二.Apache poi.jxl 的缺陷 三.阿里出品的 EasyExcel,安利一波 四.EasyExcel 解决了什么 五.快速上手 六.特殊场景支持 七.Web 下载示例代码 八 ...

  9. @excel 注解_7 行代码实现 Excel 文件导出

    作 者:犬小哈 来 源:首发自「小哈学Java」 广而告之:由于此订阅号换了个皮肤,系统自动取消了读者的公众号置顶.导致用户接受文章不及时.可以打开订阅号,选择置顶(标星)公众号,重磅干货,第一时间送 ...

最新文章

  1. 日志处理模块----logging
  2. html 组件化 编辑器,vue.js组件化使用百度富文本编辑器(一)
  3. 算法设计 (克菜因伯格 / 塔多斯 著)
  4. 重构风险程序员一定要遵守的规则
  5. vba代码编程800例_VBA编程常用“积木”过程代码Address的含义
  6. matlab2010alinux下载,Linux matlab 2010a 下载与安装过程
  7. CSS中div覆盖另一个div
  8. x64汇编第三讲,64位调用约定与函数传参.
  9. 2015.8.3 Java
  10. Java中多态的一些简单理解
  11. 学一级计算机需多久啊,BIM一级考试通关需要花多久来准备?
  12. Python 词云可视化【爆肝之作】
  13. 雷电模拟器的一些命令
  14. vue valley_12个无剧透的Stardew Valley秘诀和技巧,助您入门
  15. 元学习(Meta Learning)最全论文、视频、书籍资源整理
  16. mysql 默认排序是什么意思,MySQL 默认排序是什么
  17. BWA处理WES文件
  18. Ping命令(Ping网络打印机)
  19. 【校招篇】招聘季来临,金三银四你准备好了吗?
  20. ReCap 360 photo照片建模技术的又一个例子

热门文章

  1. 亚德客真空表DPSN基本参数设置
  2. 非标机械设计Excel表格伺服电机选型计算公式软件机器设备自动化
  3. 程序员都不知道的代码
  4. cad坐标归零lisp_CAD怎么将Z轴的标高一次性归零
  5. 图片隐写术 - 透明部落通过BMP的RGB通道隐藏PE数据
  6. 智能交通应用GPS北斗定位模块
  7. 陈景润是数学天才吗?
  8. Paddle Inference推理部署
  9. hp计算机如何进入启动界面,惠普电脑bios怎么进入-进入惠普电脑bios的方法 - 河东软件园...
  10. 运算放大器使用六原则