电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java Poi 在Excel中輸出特殊符號的實現方法

瀏覽:75日期:2022-05-27 18:32:39

最近的工作圍繞報表導出,并沒有集成相應的報表插件,只是使用了Poi。其中有一個需求,Excel中導出特殊符號,如√、×等。在網上找尋了許久,沒有相關資料,故記錄分享一下。

思考良久,走了不少彎路,最后受 System.out.println() 啟發,實現方式真的超級簡單。每一個特殊符號,都對應一個Unicode編碼,我們只需要將特定的符號,轉變成Unicode編碼,進行輸出即可。

Java Poi 在Excel中輸出特殊符號的實現方法

相應的代碼輸出:

cell.setCellValue('u221A');

另附自己編寫的Excel工具類,支持單表、主子表(可定制主表在前還是在后)、圖片、特殊符號等。

<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version></dependency><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version></dependency><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>4.1.2</version></dependency>

package com.king.tools.util;import java.util.HashMap;import java.util.Map;/** * @author ππ * @date 2020-6-22 17:03 * 導出的Excel中,百分比 */public class ExcelPercentField { public final static Map<String,String> percentFiledMap = new HashMap<>(); static { // 根據實際情況進行設置 percentFiledMap.put('a','a'); percentFiledMap.put('b','b'); percentFiledMap.put('c','c'); }}

package com.king.tools.util;import org.apache.poi.hssf.usermodel.*;import org.apache.poi.hssf.util.HSSFColor;import org.apache.poi.ss.usermodel.*;import org.apache.poi.ss.util.CellRangeAddress;import org.apache.poi.ss.util.RegionUtil;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletResponse;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.lang.reflect.Method;import java.util.*;/** * @author ππ * @date 2020-6-10 14:45 * excel 導出通用類 * 采用反射生成 * 目前僅支持導出slx,暫不支持導出xlsx格式 */public class ExcelExport<T> { Logger logger = LoggerFactory.getLogger(ExcelExport.class); private HSSFWorkbook workbook; private HSSFSheet sheet; private int rowNum; private HSSFPatriarch patriarch ; private String fileName; private int version; public ExcelExport(){} public ExcelExport(String fileName, int version) { this.fileName = fileName; this.version = version; } /** * 導出Excel到指定位置 * @param fields 字段集合 主表key為entity,子表key為children * @param dataset 數據集合 注意:如果為主子表,主表中,子表集合對應的屬性名必須為children,反射使用的children進行映射,可修改 * @param path 文件路徑 */ public void exportExcel(String title, Map<String,List<String>> fields, Collection<T> dataset, String path,boolean childBefore){ createExcelHSSF(title,fields,null,dataset,DateUtils.YYYY_MM_DD,path,childBefore); } /** * 導出Excel到指定位置 * @param fields 字段集合 主表key為entity,子表key為children * @param header 表頭數組 * @param dataset 數據集合 注意:如果為主子表,主表中,子表集合對應的屬性名必須為children,反射使用的children進行映射,可修改 * @param path 文件路徑 * @param childBefore 子表在前 默認false */ public void exportExcel(String title,Map<String,List<String>> fields,String[] header,Collection<T> dataset,String path,boolean childBefore){ createExcelHSSF(title,fields,header,dataset,DateUtils.YYYY_MM_DD,path,childBefore); } /** * 導出Excel到指定位置 * @param fields 字段集合 主表key為entity,子表key為children * @param header 表頭數組 * @param dataset 數據集合 注意:如果為主子表,主表中,子表集合對應的屬性名必須為children,反射使用的children進行映射,可修改 * @param pattern 日期格式 * @param path 文件路徑 * @param childBefore 子表在前 */ public void exportExcel(String title,Map<String,List<String>> fields,String[] header,Collection<T> dataset,String pattern,String path,boolean childBefore){ createExcelHSSF(title,fields,header,dataset,pattern,path,childBefore); } /** * 導出文件到本地 * @param fields 字段集合 主表key為entity,子表key為children * @param dataset 數據集合 注意:如果為主子表,主表中,子表集合對應的屬性名必須為children,反射使用的children進行映射,可修改 * @param response http */ public void exportExcel(String title,Map<String,List<String>> fields, Collection<T> dataset, HttpServletResponse response){ createExcelHSSF(title,fields,null,dataset,DateUtils.YYYY_MM_DD,response); } /** * 導出文件到本地 * @param fields 字段集合 主表key為entity,子表key為children * @param header 表頭數組 * @param dataset 數據集合 注意:如果為主子表,主表中,子表集合對應的屬性名必須為children,反射使用的children進行映射,可修改 * @param response http */ public void exportExcel(String title, Map<String,List<String>> fields, String[] header, Collection<T> dataset, HttpServletResponse response){ createExcelHSSF(title,fields,header,dataset,DateUtils.YYYY_MM_DD,response); } /** * 導出文件到本地 * @param fields 字段集合 主表key為entity,子表key為children * @param header 表頭數組 * @param dataset 數據集合 注意:如果為主子表,主表中,子表集合對應的屬性名必須為children,反射使用的children進行映射,可修改 * @param pattern 日期格式 * @param response http */ public void exportExcel(String title, Map<String,List<String>> fields, String[] header, Collection<T> dataset, String pattern, HttpServletResponse response){ createExcelHSSF(title,fields,header,dataset,pattern,response); } /** * 頁面下載excel * @param title * @param fields * @param header * @param dataset * @param pattern * @param response */ private void createExcelHSSF(String title, Map<String,List<String>> fields, String[] header, Collection<T> dataset, String pattern, HttpServletResponse response){ response.reset(); // 清除buffer緩存 // 指定下載的文件名 response.setHeader('Content-Disposition', 'attachment;filename=contacts' +(StringUtils.isBlank(fileName)? DateUtils.dateTimeNow() : fileName) + '.xls'); response.setContentType('application/vnd.ms-excel;charset=UTF-8'); response.setHeader('Pragma', 'no-cache'); response.setHeader('Cache-Control', 'no-cache'); response.setDateHeader('Expires', 0); createExcel2003(title,fields,header,dataset,pattern, false); httpExcelHSSF(workbook,response); } /** * 輸出到指定路徑 * @param title * @param fields * @param header * @param dataset * @param pattern * @param path * @param childBefore */ private void createExcelHSSF(String title,Map<String,List<String>> fields,String[] header,Collection<T> dataset,String pattern,String path,boolean childBefore){ createExcel2003(title,fields,header,dataset,pattern,childBefore); ioExcelHSSF(workbook,path); } /** * 公共方法,創建excel 2003版 * @param title * @param fields * @param header * @param dataset * @param pattern * @param childBefore */ private void createExcel2003(String title, Map<String, List<String>> fields, String[] header, Collection<T> dataset, String pattern, boolean childBefore){ // 初始化構建 initWorkBook(); // 生成樣式 HSSFCellStyle titleStyle = getTitleStyle(workbook); HSSFCellStyle headerStyle = getHeaderStyle(workbook); HSSFCellStyle normalStyle = getNormalStyle(workbook); HSSFCellStyle footerStyle = getFooterStyle(workbook); HSSFCellStyle percentStyle = createPercentStyle(workbook); // 創建表頭 createTableTitle(title,header.length-1,titleStyle); // 生成標題行 createTableHead(header,headerStyle); // 迭代集合 Iterator it = dataset.iterator(); // 獲取主表屬性字段 List<String> entityFields = fields.get('entity'); // 獲取子表屬性字段 List<String> childFields = fields.get('children'); // 主表字段長度 int entityColumnLength = entityFields.size(); int childColumnLength = 0; if(childFields !=null){ childColumnLength = childFields.size(); } // 合并行 int rowspan = 0; // 每個對象的子表數據 Object children = null; HSSFRow row; HSSFCell cell; while (it.hasNext()){ rowNum ++; T t = (T) it.next(); row = sheet.createRow(rowNum); // 確定合并行數 if(childFields !=null && childFields.size() > 0){children = getValue(t,'children');if(children !=null && ((ArrayList)children).size()>0){ rowspan = ((ArrayList)children).size()-1;} } // 主表字段 for(int i = 0; i <entityFields.size(); i++){Object value = getValue(t,entityFields.get(i));// 創建單元格if(childBefore){ if(ExcelPercentField.percentFiledMap.containsKey(entityFields.get(i))){ createTableCell(row.createCell(i+childColumnLength),value,percentStyle,pattern,rowspan); }else{ createTableCell(row.createCell(i+childColumnLength),value,normalStyle,pattern,rowspan); }}else{ if(ExcelPercentField.percentFiledMap.containsKey(entityFields.get(i))){ createTableCell(row.createCell(i),value,percentStyle,pattern,rowspan); }else{ createTableCell(row.createCell(i),value,normalStyle,pattern,rowspan); }} } // 子表字段 if(childFields !=null && childFields.size() > 0){if(children !=null ){ List list = (ArrayList)children; for(int i = 0;i <list.size(); i++){ if(i >0){ rowNum++; row = sheet.createRow(rowNum); } for(int j = 0;j<childFields.size();j++){ Object value = getValue(list.get(i),childFields.get(j)); if(childBefore){if(ExcelPercentField.percentFiledMap.containsKey(childFields.get(j))){ createTableCell(row.createCell(j ),value,percentStyle,pattern,rowspan);}else{ createTableCell(row.createCell(j ),value,normalStyle,pattern,rowspan);} }else{if(ExcelPercentField.percentFiledMap.containsKey(childFields.get(j))){ createTableCell(row.createCell(j +entityColumnLength),value,percentStyle,pattern,rowspan);}else{ createTableCell(row.createCell(j +entityColumnLength),value,normalStyle,pattern,rowspan);} } } }} } // 如果需要合并行 if(rowspan > 0){for(int i = 0;i<entityFields.size();i++){ CellRangeAddress cellRange = null; if(childBefore){ cellRange= new CellRangeAddress(rowNum-rowspan,rowNum,i+childColumnLength,i+childColumnLength); }else{ cellRange = new CellRangeAddress(rowNum-rowspan,rowNum,i,i); } sheet.addMergedRegion(cellRange); //添加邊框 RegionUtil.setBorderTop(BorderStyle.THIN, cellRange, sheet); RegionUtil.setBorderBottom(BorderStyle.THIN, cellRange, sheet); RegionUtil.setBorderLeft(BorderStyle.THIN, cellRange, sheet); RegionUtil.setBorderRight(BorderStyle.THIN, cellRange, sheet); RegionUtil.setTopBorderColor(HSSFColor.HSSFColorPredefined.GREEN.getIndex(),cellRange,sheet); RegionUtil.setBottomBorderColor(HSSFColor.HSSFColorPredefined.GREEN.getIndex(),cellRange,sheet); RegionUtil.setLeftBorderColor(HSSFColor.HSSFColorPredefined.GREEN.getIndex(),cellRange,sheet); RegionUtil.setRightBorderColor(HSSFColor.HSSFColorPredefined.GREEN.getIndex(),cellRange,sheet);} } } sheet.autoSizeColumn(2); setSizeColumn(sheet,entityColumnLength+childColumnLength); } /** * 初始化構建工作簿 */ private void initWorkBook(){ // 創建一個工作簿 workbook = HSSFWorkbookFactory.createWorkbook(); // 創建一個sheet sheet = workbook.createSheet(); // 默認表格列寬 sheet.setDefaultColumnWidth(18); patriarch = sheet.createDrawingPatriarch(); } /** * 創建Excel標題 * @param title 標題 * @param colspan 合并列 * @param headerStyle 樣式 */ private void createTableTitle(String title,int colspan, HSSFCellStyle headerStyle) { if(StringUtils.isBlank(title)){ return; } HSSFRow row = sheet.createRow(rowNum); row.setHeightInPoints(30f); HSSFCell cell = row.createCell(0); sheet.addMergedRegion(new CellRangeAddress(rowNum,rowNum,0,colspan)); cell.setCellStyle(headerStyle); cell.setCellValue(title); rowNum ++; } /** * 創建Excel表頭 * @param header * @param headerStyle */ private void createTableHead(String[] header, HSSFCellStyle headerStyle) { if(header ==null || header.length <1){ return; } HSSFRow row = sheet.createRow(rowNum); HSSFCell cell; for (int i = 0; i < header.length; i++){ cell = row.createCell(i); cell.setCellStyle(headerStyle); cell.setCellValue(header[i]); cell.setCellType(CellType.STRING); } } /** * 創建單元格 * @param cell * @param value * @param normalStyle */ private void createTableCell(HSSFCell cell, Object value, HSSFCellStyle normalStyle, String pattern, int rowspan) { cell.setCellStyle(normalStyle); if (value ==null){ return; } if(value instanceof Number){ cell.setCellType(CellType.NUMERIC); cell.setCellValue(Double.parseDouble(value.toString())); //日期 } else if(value instanceof Date){ cell.setCellType(CellType.STRING); cell.setCellValue(DateUtils.parseDateToStr(pattern,(Date)value)); // 圖片 } else if(value instanceof byte[]){ cell.getRow().setHeightInPoints(80); sheet.setColumnWidth(cell.getColumnIndex(),(short) (34.5 * 110)); HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, (short) cell.getColumnIndex(), rowNum, (short) cell.getColumnIndex(), rowNum); anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_DONT_RESIZE); patriarch.createPicture(anchor, workbook.addPicture( (byte[])value, HSSFWorkbook.PICTURE_TYPE_JPEG)); }else if(value instanceof Boolean){ cell.setCellType(CellType.STRING); if((boolean)value){cell.setCellValue('u221A'); } // 全部當作字符串處理 }else{ cell.setCellType(CellType.STRING); cell.setCellValue(new HSSFRichTextString(String.valueOf(value))); } } /** * 創建標題行 * @param workbook * @return */ private HSSFCellStyle getTitleStyle(HSSFWorkbook workbook) { HSSFCellStyle style = getNormalStyle(workbook); style.getFont(workbook).setFontHeightInPoints((short)12); style.setAlignment(HorizontalAlignment.CENTER); style.setVerticalAlignment(VerticalAlignment.CENTER); return style; } /** * 創建尾部合計行 * @param workbook * @return */ private HSSFCellStyle getFooterStyle(HSSFWorkbook workbook) { HSSFCellStyle style = getNormalStyle(workbook); style.getFont(workbook).setFontHeightInPoints((short)12); style.setAlignment(HorizontalAlignment.CENTER); style.setVerticalAlignment(VerticalAlignment.CENTER); style.setFillForegroundColor(IndexedColors.LIME.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); return style; } /** * 創建表頭樣式 * @param workbook * @return */ private HSSFCellStyle getHeaderStyle(HSSFWorkbook workbook) { HSSFCellStyle style = getNormalStyle(workbook); style.getFont(workbook).setFontHeightInPoints((short)11); style.setAlignment(HorizontalAlignment.CENTER); style.setVerticalAlignment(VerticalAlignment.CENTER); style.setFillForegroundColor(IndexedColors.LIME.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); HSSFPalette palette = workbook.getCustomPalette(); palette.setColorAtIndex(IndexedColors.LIME.getIndex(),(byte)198,(byte)224,(byte)180); return style; } /** * 百分比格式 * @param workbook * @return */ private HSSFCellStyle createPercentStyle(HSSFWorkbook workbook){ HSSFCellStyle style = getNormalStyle(workbook); style.setDataFormat(HSSFDataFormat.getBuiltinFormat('0.00%')); return style; } /** * 創建普通樣式 * @param workbook * @return */ private HSSFCellStyle getNormalStyle(HSSFWorkbook workbook){ // 創建字體 HSSFFont font = workbook.createFont(); font.setFontHeightInPoints((short)10); // 構建樣式 HSSFCellStyle style = workbook.createCellStyle(); // 設置邊框 style.setBorderTop(BorderStyle.THIN); style.setBorderRight(BorderStyle.THIN); style.setBorderBottom(BorderStyle.THIN); style.setBorderLeft(BorderStyle.THIN); style.setTopBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); style.setRightBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); style.setBottomBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); style.setLeftBorderColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); style.setAlignment(HorizontalAlignment.CENTER); style.setVerticalAlignment(VerticalAlignment.CENTER); style.setFont(font); // 字體默認換行 style.setWrapText(true); return style; } /** * 反射獲取值 * @param t * @param fieldName * @param <E> * @return */ private <E> Object getValue(E t,String fieldName){ String methodName = 'get'+ fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1); try { Method method = t.getClass().getMethod(methodName); method.setAccessible(true); Object value = method.invoke(t); return value; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 輸出IO流 * @param workbook * @param path * @return */ private void ioExcelHSSF(HSSFWorkbook workbook, String path){ OutputStream ops =null; if(StringUtils.isBlank(fileName)){ path = path + DateUtils.dateTimeNow() +'.xls'; } else { path = path + fileName + '.xls'; } try { ops = new FileOutputStream(path); workbook.write(ops); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { if(ops != null){try { ops.close();} catch (IOException e) { e.printStackTrace();} } } } private void httpExcelHSSF(HSSFWorkbook workbook, HttpServletResponse response){ OutputStream ops = null; try { ops = response.getOutputStream(); response.flushBuffer(); workbook.write(ops); } catch (IOException e) { e.printStackTrace(); if(ops !=null){try { ops.close();} catch (IOException ex) { ex.printStackTrace();} } } } /** * 自適應列寬 * @param sheet * @param size 列數 */ private void setSizeColumn(HSSFSheet sheet, int size) { for(int i =0;i<size;i++){ int columnWidth = sheet.getColumnWidth(i) / 256; for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {HSSFRow currentRow;//當前行未被使用過if (sheet.getRow(rowNum) == null) { currentRow = sheet.createRow(rowNum);} else { currentRow = sheet.getRow(rowNum);}if (currentRow.getCell(i) != null) { HSSFCell currentCell = currentRow.getCell(i);// if(rowNum==sheet.getLastRowNum()){// HSSFCellStyle style = currentCell.getCellStyle();// style.setFillForegroundColor(IndexedColors.LIME.getIndex());// style.setFillPattern(FillPatternType.SOLID_FOREGROUND);// currentCell.setCellStyle(style);// } if (currentCell.getCellType() == CellType.STRING) { int length = currentCell.getStringCellValue().getBytes().length; if (columnWidth < length) { columnWidth = length; } }} } sheet.setColumnWidth(i, columnWidth * 256); } }}

效果圖如下:

Java Poi 在Excel中輸出特殊符號的實現方法

但仍遇到一個問題,主子表結構導出,如果圖片在主表,合并行之后,圖片并不會居中,并且第一行會被撐開,有沒有比較簡單的方式進行處理(不想重新計算錨點,然后定高輸出)?

Java Poi 在Excel中輸出特殊符號的實現方法

到此這篇關于Java Poi 在Excel中輸出特殊符號的文章就介紹到這了,更多相關java poi excel 輸出特殊符號內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: excel
相關文章:
主站蜘蛛池模板: 江西自考网| 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | J.S.Bach 圣巴赫_高端背景音乐系统_官网| 洛阳装修公司-洛阳整装一站式品牌-福尚云宅装饰 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 天津散热器_天津暖气片_天津安尼威尔散热器制造有限公司 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 工业铝型材-铝合金电机壳-铝排-气动执行器-山东永恒能源集团有限公司 | 电镀整流器_微弧氧化电源_高频电解电源_微弧氧化设备厂家_深圳开瑞节能 | WF2户外三防照明配电箱-BXD8050防爆防腐配电箱-浙江沃川防爆电气有限公司 | 东亚液氮罐-液氮生物容器-乐山市东亚机电工贸有限公司 | 写方案网_方案策划方案模板下载 事迹材料_个人事迹名人励志故事 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 全自动贴标机-套标机-工业热风机-不干胶贴标机-上海厚冉机械 | 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 科箭WMS仓库管理软件-TMS物流管理系统-科箭SaaS云服务 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 威廉希尔WilliamHill·足球(中国)体育官方网站 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 粒米特测控技术(上海)有限公司-测功机_减速机测试台_电机测试台 | 首页_中夏易经起名网| 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 展厅设计-展馆设计-专业企业展厅展馆设计公司-昆明华文创意 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 北京包装设计_标志设计公司_包装设计公司-北京思逸品牌设计 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 神马影院-实时更新秒播| 小程序开发公司-小程序制作-微信小程序开发-小程序定制-咏熠软件 | 三佳互联一站式网站建设服务|网站开发|网站设计|网站搭建服务商 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 二手注塑机回收_旧注塑机回收_二手注塑机买卖 - 大鑫二手注塑机 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 岸电电源-60HZ变频电源-大功率变频电源-济南诚雅电子科技有限公司 |