java - excel创建模板表格
1.创建表格(根据自己需求改变字段名和格式)
public Result exportExcel21() {OutputStream out = null;try {this.sheet = wb.createSheet();this.createFormat();out = new FileOutputStream(getAbsoluteFile(fullfolderName));wb.write(out);return Result.succeed();} catch (Exception e) {log.error("导出Excel异常{}", e.getMessage());throw new CustomException("导出Excel失败,请联系网站管理员!");} finally {}}// private final int rowHeightIdCard = 450;//固定列宽private final double[] colWidths = {5.63, 21.25, 16.38, 10.25, 9.13, 16.13, 11.5, 27.13};/*** 设置列宽** @param* @return*/private void setColumnWidth() {//比例 本来应该是256但不知道为何存在误差,此处根据误差比例进行调整final int scale = 296;for (int i = 0; i < colWidths.length; i++) {sheet.setColumnWidth(i, (int) (scale * colWidths[i]));}}/*** 对单元格进行合并同时进行边框处理(避免合并单元格后部分单元格没有边框)** @param* @return*/private void setMergedBorder(CellStyle style, Row rows, int col1, int col2) {for (int i = col1 + 1; i <= col2; i++) {Cell hssfCell = rows.createCell(i);hssfCell.setCellStyle(style);hssfCell.setCellValue("");}}/*** 创建行元素.** @param style 样式* @param height 行高* @param value 行显示的内容* @param row1 起始行* @param row2 结束行* @param col1 起始列* @param col2 结束列*/private void createRow(CellStyle style, int height, String value, int row1, int row2, int col1, int col2) {sheet.addMergedRegion(new CellRangeAddress(row1, row2, col1, col2)); //设置从第row1行合并到第row2行,第col1列合并到col2列Row rows = sheet.createRow(row1);//设置第几行setMergedBorder(style, rows, col1, col2); //进行合并后边框处理rows.setHeight((short) height); //设置行高Cell cell = rows.createCell(col1); //设置内容开始的列cell.setCellStyle(style); //设置样式cell.setCellValue(value); //设置该行的值}/*** 创建样式** @param fontSize 字体大小* @param align 水平位置 左右居中2 居右3 默认居左 垂直均为居中* @param bold 是否加粗* @return*/private CellStyle getStyle(int fontSize, int align, boolean bold, boolean border) {Font font = wb.createFont();font.setFontName("宋体");font.setFontHeightInPoints((short) fontSize);// 字体大小font.setBold(bold);CellStyle style = wb.createCellStyle();style.setFont(font); //设置字体style.setWrapText(true);switch (align) { // 居左1 居中2 居右3 默认居左// case 1:style.setAlignment(HorizontalAlignment.LEFT);break;case 2:style.setAlignment(HorizontalAlignment.CENTER);break;case 3:style.setAlignment(HorizontalAlignment.RIGHT);break;}style.setVerticalAlignment(VerticalAlignment.CENTER);// 上下居中1if (border) {style.setBorderRight(BorderStyle.THIN);style.setBorderLeft(BorderStyle.THIN);style.setBorderBottom(BorderStyle.THIN);style.setBorderTop(BorderStyle.THIN);style.setLocked(true);}return style;}/*** 用设置表格格式生成固定表格,思路是一行一行进行建表* 注意:* 对于同一行中多个信息:&表示信息填写在同一格 /表示信息填写在不同格** @param* @param*/public void createFormat() throws IOException {//测试DTOCreatDTO creatDTO = new CreatDTO();//设置列宽setColumnWidth();//表格大标题常用格式int bigTitleFontSIze = 18;CellStyle styleBigTitleCommon = getStyle(bigTitleFontSIze, 2, true, true);//表格小标题常用格式int smallTitleFontSize = 14;CellStyle styleSmallTitleCommon = getStyle(smallTitleFontSize, 2, true, true);//表格固定方框内常用格式//字体设置int textFontSize = 14;CellStyle styleFixedCommon = getStyle(textFontSize, 2, true, true);//表格填写方框内常用格式CellStyle styleWriteCommon = getStyle(textFontSize, 2, true, true);//当前行数(每次完成一行构建就++)//开始行int currentRow = 0;/*** 第一行:标题*///开始列int startColumn = 1;//固定行高 分别表示标题行高,正文行高,“注~”栏行高int titleRowHeight = 885;createRow(styleBigTitleCommon, titleRowHeight, "Excel导出测试表", currentRow, currentRow, startColumn, startColumn + 6);currentRow++;/*** 第二行:自然人信息*/int rowHeight = 815;createRow(styleSmallTitleCommon, rowHeight, "自然人信息", currentRow, currentRow, startColumn, startColumn + 6);currentRow++;/*** 第三行:名字/联系电话*/Row row3 = sheet.createRow(currentRow);row3.setHeight((short) rowHeight);//姓名Cell cellName = row3.createCell(startColumn);cellName.setCellStyle(styleFixedCommon);cellName.setCellValue("姓名");//姓名填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 1, startColumn + 3));setMergedBorder(styleWriteCommon, row3, startColumn + 1, startColumn + 3);Cell cellOfName = row3.createCell(startColumn + 1);cellOfName.setCellStyle(styleWriteCommon);cellOfName.setCellValue(creatDTO.getName());//联系电话row3.setHeight((short) rowHeight);Cell cellMobileOFDrawer = row3.createCell(startColumn + 4);cellMobileOFDrawer.setCellStyle(styleFixedCommon);cellMobileOFDrawer.setCellValue("联系电话");//联系电话填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 5, startColumn + 6));setMergedBorder(styleWriteCommon, row3, startColumn + 5, startColumn + 6);Cell cellOfMobileOfDrawer = row3.createCell(startColumn + 5);cellOfMobileOfDrawer.setCellStyle(styleWriteCommon);cellOfMobileOfDrawer.setCellValue(creatDTO.getMobileOfDrawer());currentRow++;/*** 第四行:身份证号*/Row row4 = sheet.createRow(3);row4.setHeight((short) rowHeight);//身份证号Cell cellIdNo = row4.createCell(startColumn);cellIdNo.setCellStyle(styleFixedCommon);cellIdNo.setCellValue("身份证号码");//身份证号填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 1, startColumn + 6));setMergedBorder(styleWriteCommon, row4, startColumn + 1, startColumn + 6);Cell cellOfIdNo = row4.createCell(startColumn + 1);cellOfIdNo.setCellStyle(styleWriteCommon);cellOfIdNo.setCellValue(creatDTO.getIdNo());currentRow++;/*** 第五行:购买方信息*/createRow(styleSmallTitleCommon, rowHeight, "购买方信息", currentRow, currentRow, startColumn, startColumn + 6);currentRow++;/*** 第六行:公司名称/纳税人识别号*/Row row6 = sheet.createRow(currentRow);row6.setHeight((short) rowHeight);//公司名称Cell cellCompanyName = row6.createCell(startColumn);cellCompanyName.setCellStyle(styleFixedCommon);cellCompanyName.setCellValue("公司名称");//公司名称填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 1, startColumn + 3));setMergedBorder(styleWriteCommon, row6, startColumn + 1, startColumn + 3);Cell cellOfCompanyName = row6.createCell(startColumn + 1);cellOfCompanyName.setCellStyle(styleWriteCommon);cellOfCompanyName.setCellValue(creatDTO.getCompanyName());//纳税人识别号Cell cellIdentificationNumber = row6.createCell(startColumn + 4);cellIdentificationNumber.setCellStyle(styleFixedCommon);cellIdentificationNumber.setCellValue("纳税人识别号");//纳税人识别号填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 5, startColumn + 6));setMergedBorder(styleWriteCommon, row6, startColumn + 5, startColumn + 6);Cell cellOfIdentificationNumber = row6.createCell(startColumn + 5);cellOfIdentificationNumber.setCellStyle(styleWriteCommon);cellOfIdentificationNumber.setCellValue(creatDTO.getIdentificationNumber());currentRow++;/*** 第七行:地址&联系电话*/Row row7 = sheet.createRow(currentRow);row7.setHeight((short) rowHeight);//地址&联系电话Cell cellAddressAndMobileOfHead = row7.createCell(startColumn);cellAddressAndMobileOfHead.setCellStyle(styleFixedCommon);cellAddressAndMobileOfHead.setCellValue("地址&联系电话");//地址&联系电话填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 1, startColumn + 6));setMergedBorder(styleWriteCommon, row7, startColumn + 1, startColumn + 6);Cell cellOfAddressAndMobileOfHead = row7.createCell(startColumn + 1);cellOfAddressAndMobileOfHead.setCellStyle(styleWriteCommon);//间隔符号设置String interval = " ";cellOfAddressAndMobileOfHead.setCellValue(creatDTO.getAddress() + interval + creatDTO.getMobileOfHead());currentRow++;/*** 第八行:开户行&银行账号*/Row row8 = sheet.createRow(currentRow);row8.setHeight((short) rowHeight);//开户行&银行账号Cell cellBankNameAndBankAccount = row8.createCell(startColumn);cellBankNameAndBankAccount.setCellStyle(styleFixedCommon);cellBankNameAndBankAccount.setCellValue("开户行&银行账号");//开户行&银行账号填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 1, startColumn + 6));setMergedBorder(styleWriteCommon, row8, startColumn + 1, startColumn + 6);Cell cellOfBankNameAndBankAccount = row8.createCell(startColumn + 1);cellOfBankNameAndBankAccount.setCellStyle(styleWriteCommon);cellOfBankNameAndBankAccount.setCellValue(creatDTO.getBankName() + interval + creatDTO.getBankAccount());currentRow++;/*** 第九行+第十行 ~ 第N行+第N+1行:开票内容相关* 注意:* 此处命名统一以第9/10行为规范。*///开票内容包含几行for (CreatDTO.OrderItemPO itemPO : creatDTO.getOrderItems()) {Row row9 = sheet.createRow(currentRow);row9.setHeight((short) rowHeight);//开票内容Cell cellInvoiceContent = row9.createCell(startColumn);cellInvoiceContent.setCellStyle(styleFixedCommon);cellInvoiceContent.setCellValue("开票内容");//开票内容填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 1, startColumn + 6));setMergedBorder(styleWriteCommon, row9, startColumn + 1, startColumn + 6);Cell cellOfInvoiceContent = row9.createCell(startColumn + 1);cellOfInvoiceContent.setCellStyle(styleWriteCommon);cellOfInvoiceContent.setCellValue(itemPO.getRemark());currentRow++;Row row10 = sheet.createRow(currentRow);row10.setHeight((short) rowHeight);//规格型号Cell cellSpecs = row10.createCell(startColumn);cellSpecs.setCellStyle(styleFixedCommon);cellSpecs.setCellValue("规格型号:" + itemPO.getSpecs());//计量单位sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 1, startColumn + 2));setMergedBorder(styleWriteCommon, row10, startColumn + 1, startColumn + 2);Cell cellUnit = row10.createCell(startColumn + 1);cellUnit.setCellStyle(styleWriteCommon);cellUnit.setCellValue("计量单位:" + itemPO.getUnit());//数量sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 3, startColumn + 4));setMergedBorder(styleWriteCommon, row10, startColumn + 3, startColumn + 4);Cell cellCount = row10.createCell(startColumn + 3);cellCount.setCellStyle(styleWriteCommon);cellCount.setCellValue("数量:" + itemPO.getCount());//开票金额sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 5, startColumn + 6));setMergedBorder(styleWriteCommon, row10, startColumn + 5, startColumn + 6);Cell cellInvoiceAmt = row10.createCell(startColumn + 5);cellInvoiceAmt.setCellStyle(styleWriteCommon);cellInvoiceAmt.setCellValue("开票金额:" + itemPO.getInvoiceAmt());currentRow++;}/*** 第N+2行:收款人/复核人*/Row row11 = sheet.createRow(currentRow);row11.setHeight((short) rowHeight);//收款人sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn, startColumn + 3));setMergedBorder(styleWriteCommon, row11, startColumn, startColumn + 3);Cell cellPayee = row11.createCell(startColumn);cellPayee.setCellStyle(styleWriteCommon);cellPayee.setCellValue("收款人:" + creatDTO.getName());//复核人sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 4, startColumn + 6));setMergedBorder(styleWriteCommon, row11, startColumn + 4, startColumn + +6);Cell cellReviewer = row11.createCell(startColumn + 4);cellReviewer.setCellStyle(styleWriteCommon);cellReviewer.setCellValue("复核人:" + creatDTO.getName());currentRow++;/*** 第N+3行:备注栏*/Row row12 = sheet.createRow(currentRow);row12.setHeight((short) rowHeight);//备注栏Cell cellRemarks = row12.createCell(startColumn);cellRemarks.setCellStyle(styleFixedCommon);cellRemarks.setCellValue("备注栏");//备注栏填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 1, startColumn + 6));setMergedBorder(styleWriteCommon, row12, startColumn + 1, startColumn + 6);Cell cellOfRemarks = row12.createCell(startColumn + 1);cellOfRemarks.setCellStyle(styleWriteCommon);cellOfRemarks.setCellValue(creatDTO.getRemark());currentRow++;/*** 第N+4行:邮寄信息*/createRow(styleSmallTitleCommon, rowHeight, "邮寄信息", currentRow, currentRow, startColumn, startColumn + 6);currentRow++;/*** 第N+5行:收件地址&联系人&电话*/Row row14 = sheet.createRow(currentRow);row14.setHeight((short) rowHeight);//收件地址&联系人&电话Cell cellReceivedAddressContactsMobileOfContacts = row14.createCell(startColumn);cellReceivedAddressContactsMobileOfContacts.setCellStyle(styleFixedCommon);cellReceivedAddressContactsMobileOfContacts.setCellValue("收件地址&联系人&电话");//收件地址&联系人&电话填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 1, startColumn + 6));setMergedBorder(styleWriteCommon, row14, startColumn + 1, startColumn + 6);Cell cellOfReceivedAddressContactsMobileOfContacts = row14.createCell(startColumn + 1);cellOfReceivedAddressContactsMobileOfContacts.setCellStyle(styleWriteCommon);cellOfReceivedAddressContactsMobileOfContacts.setCellValue(creatDTO.getReceivedAddress() + interval + creatDTO.getContacts() + interval + creatDTO.getMobileOfContacts());currentRow++;/*** 第N+6行:发件联系人&电话*/Row row15 = sheet.createRow(currentRow);row15.setHeight((short) rowHeight);//发件联系人&电话Cell cellSendContactsMobileSendContacts = row15.createCell(startColumn);cellSendContactsMobileSendContacts.setCellStyle(styleFixedCommon);cellSendContactsMobileSendContacts.setCellValue("发件联系人&电话");//发件联系人&电话填写栏sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn + 1, startColumn + 6));setMergedBorder(styleWriteCommon, row15, startColumn + 1, startColumn + 6);Cell cellOfSendContactsMobileSendContacts = row15.createCell(startColumn + 1);cellOfSendContactsMobileSendContacts.setCellStyle(styleWriteCommon);cellOfSendContactsMobileSendContacts.setCellValue(creatDTO.getSendContacts() + interval + creatDTO.getMobileSendContacts());currentRow++;/*** 第N+7行:注~*/Row row16 = sheet.createRow(currentRow);int rowHeightMessage = 270;row16.setHeight((short) rowHeightMessage);CellStyle styleMessage = getStyle(11, 1, true, false);sheet.addMergedRegion(new CellRangeAddress(currentRow, currentRow, startColumn, startColumn + 3));Cell cellMessage = row16.createCell(startColumn);cellMessage.setCellStyle(styleMessage);cellMessage.setCellValue("注:以上除备注栏和发件联系人外均为必填项");currentRow++;// /**// * 隔一行// */// sheet.createRow(currentRow).setHeight((short) rowHeightMessage);// currentRow++;// /**// * 身份证图片栏// */// for (int i = 0; i < 10; i++) {// sheet.createRow(currentRow).setHeight((short) 450);// currentRow++;// }// sheet.addMergedRegion(new CellRangeAddress(currentRow - 10, currentRow - 1, startColumn, startColumn + 3));// sheet.addMergedRegion(new CellRangeAddress(currentRow - 10, currentRow - 1, startColumn + 4, startColumn + 6));//// ByteArrayOutputStream byteArrayOutFront = new ByteArrayOutputStream();// BufferedImage bufferImgFront = ImageIO.read(new File("C:\\Users\\Yuri\\Desktop\\front.png"));// ImageIO.write(bufferImgFront, "jpg", byteArrayOutFront);//// ByteArrayOutputStream byteArrayOutBack = new ByteArrayOutputStream();// BufferedImage bufferImgBack = ImageIO.read(new File("C:\\Users\\Yuri\\Desktop\\back.jpg"));// ImageIO.write(bufferImgBack, "jpg", byteArrayOutBack);//// Drawing<?> drawingPatriarch = sheet.createDrawingPatriarch();// //anchor主要用于设置图片的属性// HSSFClientAnchor anchorFront = new HSSFClientAnchor(0, 0, 1000, 255, (short) startColumn, currentRow - 10, (short) (startColumn + 3), currentRow - 1);// HSSFClientAnchor anchorBack = new HSSFClientAnchor(0, 0, 1000, 255, (short) (startColumn + 4), currentRow - 10, (short) (startColumn + 6), currentRow - 1);// anchorFront.setAnchorType(ClientAnchor.AnchorType.byId(3));// anchorBack.setAnchorType(ClientAnchor.AnchorType.byId(3));// //插入图片// drawingPatriarch.createPicture(anchorFront, wb.addPicture(byteArrayOutFront.toByteArray(),// HSSFWorkbook.PICTURE_TYPE_EMF));// drawingPatriarch.createPicture(anchorBack, wb.addPicture(byteArrayOutBack.toByteArray(),// HSSFWorkbook.PICTURE_TYPE_EMF));}
2.填充实体类,可以不填,填写人手写填入
@Data
public class CreatDTO {@ApiModelProperty(value = "开票人姓名")private String name;@ApiModelProperty(value = "开票人电话")private String mobileOfDrawer;@ApiModelProperty(value = "开票人身份证")private String idNo;@ApiModelProperty(value = "收货地址")private String address;@ApiModelProperty(value = "公司名称")private String companyName;@ApiModelProperty(value = "纳税人识别号")private String identificationNumber;@ApiModelProperty(value = "公司电话")private String mobileOfHead;@ApiModelProperty(value = "开户行名称")private String bankName;@ApiModelProperty(value = "公司账户")private String bankAccount;@ApiModelProperty(value = "开票内容")private List<OrderItemPO> orderItems;@ApiModelProperty(value = "联系人")private String contacts;@ApiModelProperty(value = "联系人电话")private String mobileOfContacts;@ApiModelProperty(value = "发件人")private String sendContacts;@ApiModelProperty(value = "发件人电话")private String mobileSendContacts;@ApiModelProperty(value = "项目名称")private String projectName;@ApiModelProperty(value = "项目地址")private String projectAddress;@ApiModelProperty(value = "收货地址")private String receivedAddress;@ApiModelProperty(value = "备注")private String remark;public CreatDTO() {setName("明天");setMobileOfDrawer("1529817555");setIdNo("51033219990505152436");setCompanyName("第一家");setIdentificationNumber("12345678910");setAddress("相城一号");setMobileOfHead("0087541");setBankName("中国银行");setBankAccount("01511544");setOrderItems(new ArrayList<>());setProjectName("企业注册");setProjectAddress("相城一号");setReceivedAddress("相城");setContacts("今天");setMobileOfContacts("0706");setSendContacts("今天");setMobileSendContacts("9913");setRemark("没有什么好备注就随便写写吧");OrderItemPO itemPO = new OrderItemPO();itemPO.setRemark("通知");itemPO.setSpecs("SR");itemPO.setUnit("平方度");itemPO.setCount(BigDecimal.valueOf(9000));itemPO.setInvoiceAmt(BigDecimal.valueOf(6554848));getOrderItems().add(itemPO);OrderItemPO itemPO2 = new OrderItemPO();itemPO2.setRemark("是的");itemPO2.setSpecs("SSS");itemPO2.setUnit("公里");itemPO2.setCount(BigDecimal.valueOf(4));itemPO2.setInvoiceAmt(BigDecimal.valueOf(984545214));getOrderItems().add(itemPO2);}@Datapublic static class OrderItemPO {@ApiModelProperty(value = "交易号")private Long orderId;@ApiModelProperty(value = "开票内容")private String remark;@ApiModelProperty(value = "规格")private String specs;@ApiModelProperty(value = "计量单位")private String unit;@ApiModelProperty(value = "数量")private BigDecimal count;@ApiModelProperty(value = "单价")private BigDecimal unitPrice;@ApiModelProperty(value = "开票金额")private BigDecimal invoiceAmt;}
}
模板excel
java - excel创建模板表格相关推荐
- java用hutool.excelUtil实现excel创建模板和下载模板
文件上传下载 1.引入hutool的excelUtil 操作excel 1.1. 引入jar包-注释 1.2. 下载模板 1.3. 上传模板文件,解析数据 数据库脚本--注释 1.引入hutool的e ...
- java excel转word表格_java利用poi生成/读取excel表格、生成word
1.引入jar包依赖 org.apache.poi poi 3.9 org.apache.poi poi-ooxml 3.8 View Code 2.编写代码测试 1 packagetestweb;2 ...
- java excel导出 模板_Java Excel 导出 模板
上面导出PDF和EXCEL的问题是图片路径出错!!! 数据库中存存的图片路径是"../dishpic/722f464f-3883-42aa-901f-21706da9c582.png&quo ...
- java excel 创建按钮_通过单击Excel按钮在Catia中设计零件
我已经在用宏编辑器构建的Catia V5中编写了一些宏,但我无法弄清楚如何从Excel访问Catia命令 . 我想知道如何通过仅在excel文件圆柱体的半径和长度中创建一个简单的直圆柱体 . 我想在C ...
- 解决POI事件驱动模式读取不到Java代码创建的Excel表格数据问题
场景 使用POI官网上的事件驱动模式的示例方法,读取单sheet单次创建的Excel表格文件(.xlsx),Microsoft Excel和WPS Excel创建的表格文件可以正常读取数据,但是jav ...
- Java EXCEL 表格导入导出(带下拉选-带VLOOKUP函数封装)
Java EXCEL 表格导入导出(带下拉选-带VLOOKUP函数封装) 对于excel Java POI 使用 目前简单导出导入功能网上很多,但是对于有下拉选,样式等缺点却是最大硬伤,故此封装一个通 ...
- java预览表格预览文档_java 如何创建一个表格.docx
java 如何创建一个表格 import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.Ac ...
- 谷歌java模板_如何创建Google表格模板
谷歌java模板 If you find yourself creating the same spreadsheet outline over and over again in Google Sh ...
- java手动/按模板生成word与excel
目录 一.前言 二.生成word 1.使用Apache poi手动生成一个word (1)导入依赖 (2)手动生成一个包含表格的word 2.使用Apache poi 按模板生成一个简单的word ( ...
最新文章
- 关于PCA算法的一点学习总结
- Python代码注释
- OpenCV椭圆拟合ellipse fitting的实例(附完整代码)
- G. Xor-MST(异或最小生成树)
- 质量属性效用树例子_数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇
- 项目下创建文件_Linux 下创建和使用交换文件
- jsp session
- 队列的顺序存储框架搭建
- Linux Scheduling Domains
- 51单片机之步进电机实验
- 0.96寸OLED12864显示屏设计方案(原理图+PCB+BOM表+程序)
- ADF7901BRUZ ASK/FSK发射器 ISM频段
- 图片的居中定位和按钮定位
- 中国石油大学(北京)-《外国文学作品选读》第二阶段在线作业
- Linux:打包压缩
- CPU被挖矿,Redis竟是内鬼,
- 通过金矿模型介绍动态规划(经典入门)
- 录音服务器修复中是什么原因,在母带中修复音频的 10 个常用方法
- matlab匿名函数
- oracle的协处理器,oracle sparc t7 和sparc m7 服务器架构.pdf