【项目实战】Java POI之Word导出经典案例一
最近项目中需要用到数据的导出到Word,本在项目中使用POI将数据导入到Word,和Excel导出类似,先将jar包导入进去(我这里就省去导jar包啦),我直接上实现过程吧!
1、导入POI jar包;
2、创建新的Word模板,如下图:
3、JSP页面按钮定义如下:
<button type="button" οnclick="toInsuranceExcel()" class="button button-primary button-small">导出Word </button>
4、JS中点击事件(包括参数传递、发送请求)代码如下:
/* 导出Word */
function toInsuranceExcel(){var curpagenum = $('#contentGroupOrderTable').getGridParam('page');$("#page").val(curpagenum);var startTime=$('#startTime').val();var endTime=$('#endTime').val();var receiveMode=$('#receiveMode').val();var groupCode=$('#groupCode').val();var supplierName=$('#supplierName').val();var orgIds=$('#orgIds').val();var orgNames=$('#orgNames').val();var operType=$('#operType').val();var saleOperatorIds=$('#saleOperatorIds').val();var saleOperatorName=$('#saleOperatorName').val();var orderMode=$('#dicIds').val();var remark=$('#remark').val();var page=$('#page').val();var pageSize=$('#pageSize').val();var userRightType=$('#userRightType').val();var guestName=$('#guestName').val();var gender=$('#gender').val()var ageFirst=$('#ageFirst').val()var ageSecond=$('#ageSecond').val()var nativePlace=$('#nativePlace').val()window.location ='../taobao/downloadInsure.htm?startTime='+startTime+"&endTime="+endTime+"&receiveMode="+receiveMode+"&groupCode="+groupCode+"&supplierName="+supplierName+"&orgIds="+orgIds+"&orgNames="+orgNames+"&operType="+operType+"&saleOperatorIds="+saleOperatorIds+"&saleOperatorName="+saleOperatorName+"&orderMode="+orderMode+"&remark="+remark+"&page="+page+"&pageSize="+pageSize+"&userRightType="+userRightType+"&guestName="+guestName+"&gender="+gender+"&ageFirst="+ageFirst+"&ageSecond="+ageSecond+"&nativePlace="+nativePlace;
}
5、Java后台Controller代码实现方法如下:
/*** 投保单* * @param groupId* @param request* @param response*/@RequestMapping("downloadInsure.htm")public void downloadInsureFile(HttpServletRequest request, HttpServletResponse response, String startTime,String endTime,String receiveMode,String groupCode,String supplierName,String orgIds,String orgNames,String operType,String saleOperatorIds,String saleOperatorName,String orderMode,String remark,Integer page,Integer pageSize,Integer userRightType,String guestName,Integer gender,Integer ageFirst,Integer ageSecond,String nativePlace){try {// 处理中文文件名下载乱码request.setCharacterEncoding("UTF-8");} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}String path = "";String fileName = "";// 投保书try {fileName = new String("投保书.doc".getBytes("UTF-8"), "iso-8859-1");} catch (UnsupportedEncodingException e) {e.printStackTrace();}path = saleInsurance( request, response, startTime, endTime, receiveMode, groupCode, supplierName,orgIds, orgNames, operType, saleOperatorIds, saleOperatorName,orderMode, remark, page, pageSize, userRightType,guestName, gender, ageFirst, ageSecond, nativePlace);response.setCharacterEncoding("utf-8");response.setContentType("application/msword"); // word格式try {response.setHeader("Content-Disposition", "attachment; filename=" + fileName);File file = new File(path);InputStream inputStream = new FileInputStream(file);OutputStream os = response.getOutputStream();byte[] b = new byte[10240];int length;while ((length = inputStream.read(b)) > 0) {os.write(b, 0, length);}inputStream.close();os.flush();os.close();file.delete();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
调用的saleInsurance方法如下:
/***投保书* * @param request* @param orderId* @return*/public String saleInsurance(HttpServletRequest request, HttpServletResponse response, String startTime,String endTime,String receiveMode,String groupCode,String supplierName,String orgIds,String orgNames,String operType,String saleOperatorIds,String saleOperatorName,String orderMode,String remark,Integer page,Integer pageSize,Integer userRightType,String guestName,Integer gender,Integer ageFirst,Integer ageSecond,String nativePlace){// TourGroup tg = tourGroupService.findByGroupCode(groupCode);String url = request.getSession().getServletContext().getRealPath("/") + "/download/"+ System.currentTimeMillis() + ".doc";String realPath = request.getSession().getServletContext().getRealPath("/template/guestInsurances.docx");WordReporter export = new WordReporter(realPath);try {export.init();} catch (IOException e) {e.printStackTrace();}GroupOrder vo = new GroupOrder();vo.setPage(page);vo.setPageSize(pageSize);vo.setStartTime(startTime);vo.setEndTime(endTime);vo.setRemark(remark);vo.setGuestName(guestName);vo.setOrderNo(orderMode);vo.setGroupCode(groupCode);vo.setSaleOperatorIds(saleOperatorIds);vo.setOrgIds(orgIds);vo.setOperType(Integer.valueOf(operType));vo.setReceiveMode(receiveMode);vo.setOrgNames(orgNames);vo.setSaleOperatorName(saleOperatorName);vo.setSupplierName(supplierName);vo.setGender(gender);vo.setAgeFirst(ageFirst);vo.setAgeSecond(ageSecond);vo.setNativePlace(nativePlace);if (StringUtils.isBlank(vo.getSaleOperatorIds()) && StringUtils.isNotBlank(vo.getOrgIds())) {Set<Integer> set = new HashSet<Integer>();String[] orgIdArr = vo.getOrgIds().split(",");for (String orgIdStr : orgIdArr) {set.add(Integer.valueOf(orgIdStr));}set = platformEmployeeService.getUserIdListByOrgIdList(WebUtils.getCurBizId(request), set);String salesOperatorIds = "";for (Integer usrId : set) {salesOperatorIds += usrId + ",";}if (!salesOperatorIds.equals("")) {vo.setSaleOperatorIds(salesOperatorIds.substring(0, salesOperatorIds.length() - 1));}}PageBean pageBean = new PageBean();if (page == null) {pageBean.setPage(1);} else {pageBean.setPage(page);}if (pageSize == null) {pageBean.setPageSize(10000);} else {pageBean.setPageSize(10000);}pageBean.setParameter(vo);pageBean.setPage(page);pageBean = groupOrderService.selectGroupOrderGuestListPage(pageBean, WebUtils.getCurBizId(request),WebUtils.getDataUserIdSet(request),userRightType);List<Map<String, String>> guestList = new ArrayList<Map<String, String>>();Map<String, String> map = null, mapTemp = null;int index = 0;if (pageBean.getResult() != null && pageBean.getResult().size() > 0) {int firstSum = pageBean.getResult().size() / 2;for (int i = 0; i < firstSum; i++) {map = (HashMap) pageBean.getResult().get(i);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");mapTemp = new HashMap<String, String>();mapTemp.put("number", index + 1 + "");mapTemp.put("code", (String) map.get("receive_mode"));mapTemp.put("guestName", (String) map.get("name"));mapTemp.put("cerNum", (String) map.get("certificate_num"));mapTemp.put("snumber", "");mapTemp.put("scode", "");mapTemp.put("sguestName", "");mapTemp.put("scerNum", "");guestList.add(mapTemp);index++;}for (int i = firstSum; i < pageBean.getResult().size(); i++) {map = (HashMap) pageBean.getResult().get(i);mapTemp = isAddNewRow(guestList);if (mapTemp == null) {mapTemp = new HashMap<String, String>();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");mapTemp.put("number", index + 1 + "");mapTemp.put("code", (String) map.get("receive_mode"));mapTemp.put("guestName", (String) map.get("name"));mapTemp.put("cerNum", (String) map.get("certificate_num"));guestList.add(mapTemp);} else {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");mapTemp.put("snumber", index + 1 + "");mapTemp.put("scode", (String) map.get("receive_mode"));mapTemp.put("sguestName", (String) map.get("name"));mapTemp.put("scerNum", (String) map.get("certificate_num"));}index++;}}Map<String, Object> mapHeader = new HashMap<String, Object>();mapHeader.put("company", WebUtils.getCurBizInfo(request).getName()); // 当前单位mapHeader.put("operator", WebUtils.getCurUser(request).getName());mapHeader.put("printTime", DateUtils.format(new Date()));mapHeader.put("opTel", WebUtils.getCurUser(request).getMobile());mapHeader.put("groupCode", "");mapHeader.put("person", String.valueOf(pageBean.getTotalCount()));mapHeader.put("guide", "");mapHeader.put("departureDate", "");mapHeader.put("maxDay", "");mapHeader.put("numDay", "");try {export.export(mapHeader, 0);export.export(guestList, 1);export.generate(url);} catch (Exception e) {e.printStackTrace();}return url;}
创建的WordReporter类代码如下:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.math.BigDecimal;import org.apache.commons.lang.StringUtils;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.openxmlformats.schemas.officeDocument.x2006.docPropsVTypes.DecimalDocument;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class WordReporter {private static final Logger logger = LoggerFactory.getLogger(WordReporter.class);private String templatePath;private XWPFDocument doc = null;private FileInputStream is = null;private OutputStream os = null;public WordReporter(String templatePath) {this.templatePath = templatePath;}public void init() throws IOException {is = new FileInputStream(new File(this.templatePath));doc = new XWPFDocument(is);}/*** 替换掉占位符* @param params* @return* @throws Exception */public boolean export(Map<String,Object> params) throws Exception{this.replaceInPara(doc, params);return true;}/*** 替换掉表格中的占位符* @param params* @param tableIndex* @return* @throws Exception */public boolean export(Map<String,Object> params,int tableIndex) throws Exception{this.replaceInTable(doc, params,tableIndex);return true;}/*** 循环生成表格* @param params* @param tableIndex* @return* @throws Exception*/public boolean export(List<Map<String,String>> params,int tableIndex) throws Exception{return export(params,tableIndex,false);}public boolean export(List<Map<String,String>> params,int tableIndex,Boolean hasTotalRow) throws Exception{this.insertValueToTable(doc, params, tableIndex,hasTotalRow);return true;}/*** 导出图片* @param params* @return* @throws Exception*/public boolean exportImg(Map<String,Object> params) throws Exception{/*List<XWPFParagraph> list = doc.getParagraphs();for(XWPFParagraph para : list){logger.info(para.getText());}*/List<XWPFTable> list = doc.getTables();System.out.print(list.size());return true;}/*** 生成word文档* @param outDocPath* @return* @throws IOException*/public boolean generate(String outDocPath) throws IOException{ os = new FileOutputStream(outDocPath);doc.write(os);this.close(os);this.close(is);return true;}/*** 替换表格里面的变量* * @param doc* 要替换的文档* @param params* 参数* @throws Exception */private void replaceInTable(XWPFDocument doc, Map<String, Object> params,int tableIndex) throws Exception {List<XWPFTable> tableList = doc.getTables();if(tableList.size()<=tableIndex){throw new Exception("tableIndex对应的表格不存在");}XWPFTable table = tableList.get(tableIndex);List<XWPFTableRow> rows;List<XWPFTableCell> cells;List<XWPFParagraph> paras;rows = table.getRows();for (XWPFTableRow row : rows) {cells = row.getTableCells();for (XWPFTableCell cell : cells) {paras = cell.getParagraphs();for (XWPFParagraph para : paras) {this.replaceInPara(para, params);}}}}/*** 替换段落里面的变量* * @param doc* 要替换的文档* @param params* 参数* @throws Exception */private void replaceInPara(XWPFDocument doc, Map<String, Object> params) throws Exception {Iterator<XWPFParagraph> iterator = doc.getParagraphsIterator();XWPFParagraph para;while (iterator.hasNext()) {para = iterator.next();this.replaceInPara(para, params);}}/*** 替换段落里面的变量* * @param para* 要替换的段落* @param params* 参数* @throws Exception * @throws IOException * @throws InvalidFormatException */private boolean replaceInPara(XWPFParagraph para, Map<String, Object> params) throws Exception {boolean data = false;List<XWPFRun> runs;//有符合条件的占位符if (this.matcher(para.getParagraphText()).find()) {runs = para.getRuns();data = true;Map<Integer,String> tempMap = new HashMap<Integer,String>();for (int i = 0; i < runs.size(); i++) { XWPFRun run = runs.get(i); String runText = run.toString(); //以"$"开头boolean begin = runText.indexOf("$")>-1;boolean end = runText.indexOf("}")>-1; if(begin && end){tempMap.put(i, runText);fillBlock(para, params, tempMap, i);continue;}else if(begin && !end){tempMap.put(i, runText);continue;}else if(!begin && end){tempMap.put(i, runText);fillBlock(para, params, tempMap, i);continue;}else{if(tempMap.size()>0){tempMap.put(i, runText);continue;}continue;}}} else if (this.matcherRow(para.getParagraphText())) {runs = para.getRuns();data = true;}return data;}/*** 填充run内容* @param para* @param params* @param tempMap* @param i* @param runText* @throws InvalidFormatException* @throws IOException* @throws Exception*/private void fillBlock(XWPFParagraph para, Map<String, Object> params,Map<Integer, String> tempMap, int index)throws InvalidFormatException, IOException, Exception {Matcher matcher;if(tempMap!=null&&tempMap.size()>0){String wholeText = "";List<Integer> tempIndexList = new ArrayList<Integer>();for(Map.Entry<Integer, String> entry :tempMap.entrySet()){tempIndexList.add(entry.getKey());wholeText+=entry.getValue();}if(wholeText.equals("")){return;}matcher = this.matcher(wholeText); if (matcher.find()) {boolean isPic = false;int width = 0;int height = 0;int picType = 0;String path = null; String keyText = matcher.group().substring(2,matcher.group().length()-1); Object value = params.get(keyText);String newRunText = "";if(value instanceof String){newRunText = matcher.replaceFirst(String.valueOf(value)); }else if(value instanceof Map){//插入图片isPic = true; Map pic = (Map)value; width = Integer.parseInt(pic.get("width").toString()); height = Integer.parseInt(pic.get("height").toString()); picType = getPictureType(pic.get("type").toString()); path = pic.get("path").toString();} //模板样式 XWPFRun tempRun = null;// 直接调用XWPFRun的setText()方法设置文本时,在底层会重新创建一个XWPFRun,把文本附加在当前文本后面,// 所以我们不能直接设值,需要先删除当前run,然后再自己手动插入一个新的run。for(Integer pos : tempIndexList){tempRun = para.getRuns().get(pos);tempRun.setText("", 0);} if(isPic){//addPicture方法的最后两个参数必须用Units.toEMU转化一下//para.insertNewRun(index).addPicture(getPicStream(path), picType, "测试",Units.toEMU(width), Units.toEMU(height));tempRun.addPicture(getPicStream(path), picType, "测试",Units.toEMU(width), Units.toEMU(height));}else{//样式继承if(newRunText.indexOf("\n")>-1){String[] textArr = newRunText.split("\n");if(textArr.length>0){//设置字体信息String fontFamily = tempRun.getFontFamily();int fontSize = tempRun.getFontSize();//logger.info("------------------"+fontSize);for(int i=0;i<textArr.length;i++){if(i==0){tempRun.setText(textArr[0],0);}else{if(StringUtils.isNotEmpty(textArr[i])){ XWPFRun newRun=para.createRun();//设置新的run的字体信息newRun.setFontFamily(fontFamily);if(fontSize==-1){newRun.setFontSize(10);}else{newRun.setFontSize(fontSize);}newRun.addBreak();newRun.setText(textArr[i], 0);}}}}}else{tempRun.setText(newRunText,0); } }}tempMap.clear();}}/*** Clone Object* @param obj* @return* @throws Exception*/private Object cloneObject(Object obj) throws Exception{ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteOut); out.writeObject(obj); ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); ObjectInputStream in =new ObjectInputStream(byteIn);return in.readObject();}private void insertValueToTable(XWPFDocument doc,List<Map<String, String>> params,int tableIndex) throws Exception {insertValueToTable(doc,params,tableIndex,false);}private void insertValueToTable(XWPFDocument doc,List<Map<String, String>> params,int tableIndex,Boolean hasTotalRow) throws Exception {List<XWPFTable> tableList = doc.getTables();if(tableList.size()<=tableIndex){throw new Exception("tableIndex对应的表格不存在");}XWPFTable table = tableList.get(tableIndex);List<XWPFTableRow> rows = table.getRows();if(rows.size()<2){throw new Exception("tableIndex对应表格应该为2行");}//模板行XWPFTableRow tmpRow = rows.get(1);List<XWPFTableCell> tmpCells = null;List<XWPFTableCell> cells = null;XWPFTableCell tmpCell = null;tmpCells = tmpRow.getTableCells();String cellText = null;String cellTextKey = null;Map<String,Object> totalMap = null; for (int i = 0, len = params.size(); i < len; i++) {Map<String,String> map = params.get(i);if(map.containsKey("total")){totalMap = new HashMap<String,Object>();totalMap.put("total", map.get("total"));continue;}XWPFTableRow row = table.createRow(); row.setHeight(tmpRow.getHeight());cells = row.getTableCells();// 插入的行会填充与表格第一行相同的列数for (int k = 0, klen = cells.size(); k < klen; k++) {tmpCell = tmpCells.get(k);XWPFTableCell cell = cells.get(k); cellText = tmpCell.getText();if(StringUtils.isNotBlank(cellText)){//转换为mapkey对应的字段cellTextKey = cellText.replace("$", "").replace("{", "").replace("}",""); if(map.containsKey(cellTextKey)){setCellText(tmpCell, cell, map.get(cellTextKey)); } }} }// 删除模版行table.removeRow(1);if(hasTotalRow && totalMap!=null){XWPFTableRow row = table.getRow(1); //cell.setText("11111");XWPFTableCell cell = row.getCell(0);replaceInPara(cell.getParagraphs().get(0),totalMap);/*String wholeText = cell.getText();Matcher matcher = this.matcher(wholeText);if(matcher.find()){*//*List<XWPFParagraph> paras = cell.getParagraphs(); for (XWPFParagraph para : paras) {this.replaceInPara(para, totalMap);}*/ //} table.addRow(row); table.removeRow(1); }}private void setCellText(XWPFTableCell tmpCell, XWPFTableCell cell,String text) throws Exception { CTTc cttc2 = tmpCell.getCTTc();CTTcPr ctPr2 = cttc2.getTcPr();CTTc cttc = cell.getCTTc();CTTcPr ctPr = cttc.addNewTcPr();//cell.setColor(tmpCell.getColor());// cell.setVerticalAlignment(tmpCell.getVerticalAlignment());if (ctPr2.getTcW() != null) {ctPr.addNewTcW().setW(ctPr2.getTcW().getW());}if (ctPr2.getVAlign() != null) {ctPr.addNewVAlign().setVal(ctPr2.getVAlign().getVal());}if (cttc2.getPList().size() > 0) {CTP ctp = cttc2.getPList().get(0);if (ctp.getPPr() != null) {if (ctp.getPPr().getJc() != null) {cttc.getPList().get(0).addNewPPr().addNewJc().setVal(ctp.getPPr().getJc().getVal());}}}if (ctPr2.getTcBorders() != null) {ctPr.setTcBorders(ctPr2.getTcBorders());}XWPFParagraph tmpP = tmpCell.getParagraphs().get(0);XWPFParagraph cellP = cell.getParagraphs().get(0);XWPFRun tmpR = null;if (tmpP.getRuns() != null && tmpP.getRuns().size() > 0) {tmpR = tmpP.getRuns().get(0);}List<XWPFRun> runList = new ArrayList<XWPFRun>();if(text==null){XWPFRun cellR = cellP.createRun(); runList.add(cellR);cellR.setText("");}else{//这里的处理思路是:$b认为是段落的分隔符,分隔后第一个段落认为是要加粗的if(text.indexOf("\b") > -1){//段落,加粗,主要用于产品行程String[] bArr = text.split("\b");for(int b=0;b<bArr.length;b++){XWPFRun cellR = cellP.createRun(); runList.add(cellR);if(b==0){//默认第一个段落加粗cellR.setBold(true); }if(bArr[b].indexOf("\n") > -1){String[] arr = bArr[b].split("\n");for(int i = 0; i < arr.length; i++){if(i > 0){cellR.addBreak();} cellR.setText(arr[i]);}}else{ cellR.setText(bArr[b]);}} }else{XWPFRun cellR = cellP.createRun(); runList.add(cellR);if(text.indexOf("\n") > -1){String[] arr = text.split("\n");for(int i = 0; i < arr.length; i++){if(i > 0){cellR.addBreak();} cellR.setText(arr[i]);}}else{ cellR.setText(text);}}}// 复制字体信息if (tmpR != null) {//cellR.setBold(tmpR.isBold());//cellR.setBold(true);for(XWPFRun cellR : runList){if(!cellR.isBold()){cellR.setBold(tmpR.isBold());}cellR.setItalic(tmpR.isItalic());cellR.setStrike(tmpR.isStrike());cellR.setUnderline(tmpR.getUnderline());cellR.setColor(tmpR.getColor());cellR.setTextPosition(tmpR.getTextPosition());if (tmpR.getFontSize() != -1) {cellR.setFontSize(tmpR.getFontSize());}if (tmpR.getFontFamily() != null) {cellR.setFontFamily(tmpR.getFontFamily());}if (tmpR.getCTR() != null) {if (tmpR.getCTR().isSetRPr()) {CTRPr tmpRPr = tmpR.getCTR().getRPr();if (tmpRPr.isSetRFonts()) {CTFonts tmpFonts = tmpRPr.getRFonts();CTRPr cellRPr = cellR.getCTR().isSetRPr() ? cellR.getCTR().getRPr() : cellR.getCTR().addNewRPr();CTFonts cellFonts = cellRPr.isSetRFonts() ? cellRPr.getRFonts() : cellRPr.addNewRFonts();cellFonts.setAscii(tmpFonts.getAscii());cellFonts.setAsciiTheme(tmpFonts.getAsciiTheme());cellFonts.setCs(tmpFonts.getCs());cellFonts.setCstheme(tmpFonts.getCstheme());cellFonts.setEastAsia(tmpFonts.getEastAsia());cellFonts.setEastAsiaTheme(tmpFonts.getEastAsiaTheme());cellFonts.setHAnsi(tmpFonts.getHAnsi());cellFonts.setHAnsiTheme(tmpFonts.getHAnsiTheme());}}}}}// 复制段落信息cellP.setAlignment(tmpP.getAlignment());cellP.setVerticalAlignment(tmpP.getVerticalAlignment());cellP.setBorderBetween(tmpP.getBorderBetween());cellP.setBorderBottom(tmpP.getBorderBottom());cellP.setBorderLeft(tmpP.getBorderLeft());cellP.setBorderRight(tmpP.getBorderRight());cellP.setBorderTop(tmpP.getBorderTop());cellP.setPageBreak(tmpP.isPageBreak());if (tmpP.getCTP() != null) {if (tmpP.getCTP().getPPr() != null) {CTPPr tmpPPr = tmpP.getCTP().getPPr();CTPPr cellPPr = cellP.getCTP().getPPr() != null ? cellP.getCTP().getPPr() : cellP.getCTP().addNewPPr();// 复制段落间距信息CTSpacing tmpSpacing = tmpPPr.getSpacing();if (tmpSpacing != null) {CTSpacing cellSpacing = cellPPr.getSpacing() != null ? cellPPr.getSpacing() : cellPPr.addNewSpacing();if (tmpSpacing.getAfter() != null) {cellSpacing.setAfter(tmpSpacing.getAfter());}if (tmpSpacing.getAfterAutospacing() != null) {cellSpacing.setAfterAutospacing(tmpSpacing.getAfterAutospacing());}if (tmpSpacing.getAfterLines() != null) {cellSpacing.setAfterLines(tmpSpacing.getAfterLines());}if (tmpSpacing.getBefore() != null) {cellSpacing.setBefore(tmpSpacing.getBefore());}if (tmpSpacing.getBeforeAutospacing() != null) {cellSpacing.setBeforeAutospacing(tmpSpacing.getBeforeAutospacing());}if (tmpSpacing.getBeforeLines() != null) {cellSpacing.setBeforeLines(tmpSpacing.getBeforeLines());}if (tmpSpacing.getLine() != null) {cellSpacing.setLine(tmpSpacing.getLine());}if (tmpSpacing.getLineRule() != null) {cellSpacing.setLineRule(tmpSpacing.getLineRule());}}// 复制段落缩进信息CTInd tmpInd = tmpPPr.getInd();if (tmpInd != null) {CTInd cellInd = cellPPr.getInd() != null ? cellPPr.getInd(): cellPPr.addNewInd();if (tmpInd.getFirstLine() != null) {cellInd.setFirstLine(tmpInd.getFirstLine());}if (tmpInd.getFirstLineChars() != null) {cellInd.setFirstLineChars(tmpInd.getFirstLineChars());}if (tmpInd.getHanging() != null) {cellInd.setHanging(tmpInd.getHanging());}if (tmpInd.getHangingChars() != null) {cellInd.setHangingChars(tmpInd.getHangingChars());}if (tmpInd.getLeft() != null) {cellInd.setLeft(tmpInd.getLeft());}if (tmpInd.getLeftChars() != null) {cellInd.setLeftChars(tmpInd.getLeftChars());}if (tmpInd.getRight() != null) {cellInd.setRight(tmpInd.getRight());}if (tmpInd.getRightChars() != null) {cellInd.setRightChars(tmpInd.getRightChars());}}}}}/*** 删除表中的行* @param tableAndRowsIdxMap 表的索引和行索引集合*/public void deleteRow(Map<Integer,List<Integer>> tableAndRowsIdxMap){if(tableAndRowsIdxMap!=null && !tableAndRowsIdxMap.isEmpty()){List<XWPFTable> tableList = doc.getTables();for(Map.Entry<Integer, List<Integer>> map : tableAndRowsIdxMap.entrySet()){Integer tableIdx = map.getKey();List<Integer> rowIdxList = map.getValue();if(rowIdxList!=null && rowIdxList.size()>0){if(tableList.size()<=tableIdx){logger.error("表格"+tableIdx+"不存在");continue;}XWPFTable table = tableList.get(tableIdx);List<XWPFTableRow> rowList = table.getRows();for(int i=rowList.size()-1;i>=0;i--){if(rowIdxList.contains(i)){table.removeRow(i);}}}}}}/*** 正则匹配字符串* * @param str* @return*/private Matcher matcher(String str) {Pattern pattern = Pattern.compile("\\$\\{(.+?)\\}",Pattern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(str);return matcher;}/*** 正则匹配字符串* * @param str* @return*/private boolean matcherRow(String str) {Pattern pattern = Pattern.compile("\\$\\[(.+?)\\]",Pattern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(str);return matcher.find();}/** * 根据图片类型,取得对应的图片类型代码 * @param picType * @return int */ private int getPictureType(String picType){ int res = XWPFDocument.PICTURE_TYPE_PICT; if(picType != null){ if(picType.equalsIgnoreCase("png")){ res = XWPFDocument.PICTURE_TYPE_PNG; }else if(picType.equalsIgnoreCase("dib")){ res = XWPFDocument.PICTURE_TYPE_DIB; }else if(picType.equalsIgnoreCase("emf")){ res = XWPFDocument.PICTURE_TYPE_EMF; }else if(picType.equalsIgnoreCase("jpg") || picType.equalsIgnoreCase("jpeg")){ res = XWPFDocument.PICTURE_TYPE_JPEG; }else if(picType.equalsIgnoreCase("wmf")){ res = XWPFDocument.PICTURE_TYPE_WMF; } } return res; } private InputStream getPicStream(String picPath) throws Exception{URL url = new URL(picPath); //打开链接 HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置请求方式为"GET" conn.setRequestMethod("GET"); //超时响应时间为5秒 conn.setConnectTimeout(5 * 1000); //通过输入流获取图片数据 InputStream is = conn.getInputStream();return is; }/*** 关闭输入流* * @param is*/private void close(InputStream is) {if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}}/*** 关闭输出流* * @param os*/private void close(OutputStream os) {if (os != null) {try {os.close();} catch (IOException e) {e.printStackTrace();}}}// public static void main(String[] args) throws Exception{
// //WordReporter exporter = new WordReporter("c:\\booking_delivery.docx");
// //exporter.init();
// /*Map<String,Object> params1 = new HashMap<String,Object>();
// params1.put("myTable", "怡美假日旅行社");
// params1.put("username", "张三");
// params1.put("Title", "昆大丽5天4晚休闲游");
// Map<String,String> picMap = new HashMap<String,String>();
// picMap.put("width", "416");//经测试416可以占一行
// picMap.put("height", "120");
// picMap.put("type", "jpg");
// picMap.put("path", "http://192.168.1.81/p2/group1/M00/00/02/wKgBWVWBJF2AfcrKAAJnyycNFME158.jpg");
// params1.put("logo", picMap);
//
// exporter.export(params1);
// List<Map<String,String>> list = new ArrayList<Map<String,String>>();
// Map<String,String> m1 = new HashMap<String,String>();
// m1.put("name", "李四1");
// m1.put("age", "20");
// m1.put("sex", "男");
// m1.put("job", "攻城狮1");
// m1.put("hobby", "篮球1");
// m1.put("phone", "1231231");
// list.add(m1);
// Map<String,String> m2 = new HashMap<String,String>();
// m2.put("name", "李四2");
// m2.put("age", "22");
// m2.put("sex", "女");
// m2.put("job", "攻城狮2");
// m2.put("hobby", "篮球2");
// m2.put("phone", "1231232");
// list.add(m2);
// Map<String,String> m3 = new HashMap<String,String>();
// m3.put("name", "李四3");
// m3.put("age", "23");
// m3.put("sex", "男3");
// m3.put("job", "攻城狮3");
// m3.put("hobby", "篮球3");
// m3.put("phone", "1231233");
// list.add(m3);
// exporter.export(list,0);*/
// Map<String,Object> m4 = new HashMap<String,Object>();
// m4.put("name", "李四4");
// m4.put("age", "24");
// m4.put("sex", "男4");
// /*Map<String,String> headMap = new HashMap<String,String>();
// headMap.put("width", "170");
// headMap.put("height", "170");
// headMap.put("type", "jpg");
// headMap.put("path", "http://192.168.1.81/p2/group1/M00/00/02/wKgBWVWBJF2AfcrKAAJnyycNFME158.jpg");
// m4.put("head", headMap);*/
// //exporter.export(m4, 2);
//
// //exporter.exportImg(m4);
// //exporter.generate("c:\\"+System.currentTimeMillis()+".doc");
//
// String text = "test"+"\n"+"test\n";
//
// String[] arr = text.split("\n");
//for(String str : arr){
// System.out.println(str);
//}
//
// }/*** 保留小数点后两位* @param d* @return*/public static String getPoint2(Double d){DecimalFormat df =new DecimalFormat("0.00");return df.format(d);}public static void main(String[] args) {/*BigDecimal b=new BigDecimal("56.244555");System.out.println(":"+getPoint2(b.doubleValue()));*/Integer b = new Integer(1);Integer a = 1000;Integer d = 1000;int c = 1;System.out.println(a==d);}/*** 判断字符串是否都为数字* @param str* @return*/public static boolean isNumeric(String str){ Pattern pattern = Pattern.compile("[0-9]*"); Matcher isNum = pattern.matcher(str);if( !isNum.matches() ){return false; } return true; }/*** 数字转换为汉语中人民币的大写<br>* * @author hongten* @contact hongtenzone@foxmail.com* @create 2013-08-13*/public static class NumberToCN {/*** 汉语中数字大写*/private static final String[] CN_UPPER_NUMBER = { "零", "壹", "贰", "叁", "肆","伍", "陆", "柒", "捌", "玖" };/*** 汉语中货币单位大写,这样的设计类似于占位符*/private static final String[] CN_UPPER_MONETRAY_UNIT = { "分", "角", "元","拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾","佰", "仟" };/*** 特殊字符:整*/private static final String CN_FULL = "整";/*** 特殊字符:负*/private static final String CN_NEGATIVE = "负";/*** 金额的精度,默认值为2*/private static final int MONEY_PRECISION = 2;/*** 特殊字符:零元整*/private static final String CN_ZEOR_FULL = "零元" + CN_FULL;/*** 把输入的金额转换为汉语中人民币的大写* * @param numberOfMoney* 输入的金额* @return 对应的汉语大写*/public static String number2CNMontrayUnit(BigDecimal numberOfMoney) {StringBuffer sb = new StringBuffer();// -1, 0, or 1 as the value of this BigDecimal is negative, zero, or// positive.int signum = numberOfMoney.signum();// 零元整的情况if (signum == 0) {return CN_ZEOR_FULL;}//这里会进行金额的四舍五入long number = numberOfMoney.movePointRight(MONEY_PRECISION).setScale(0, 4).abs().longValue();// 得到小数点后两位值long scale = number % 100;int numUnit = 0;int numIndex = 0;boolean getZero = false;// 判断最后两位数,一共有四中情况:00 = 0, 01 = 1, 10, 11if (!(scale > 0)) {numIndex = 2;number = number / 100;getZero = true;}if ((scale > 0) && (!(scale % 10 > 0))) {numIndex = 1;number = number / 10;getZero = true;}int zeroSize = 0;while (true) {if (number <= 0) {break;}// 每次获取到最后一个数numUnit = (int) (number % 10);if (numUnit > 0) {if ((numIndex == 9) && (zeroSize >= 3)) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[6]);}if ((numIndex == 13) && (zeroSize >= 3)) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[10]);}sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);sb.insert(0, CN_UPPER_NUMBER[numUnit]);getZero = false;zeroSize = 0;} else {++zeroSize;if (!(getZero)) {sb.insert(0, CN_UPPER_NUMBER[numUnit]);}if (numIndex == 2) {if (number > 0) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);}} else if (((numIndex - 2) % 4 == 0) && (number % 1000 > 0)) {sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);}getZero = true;}// 让number每次都去掉最后一个数number = number / 10;++numIndex;}// 如果signum == -1,则说明输入的数字为负数,就在最前面追加特殊字符:负if (signum == -1) {sb.insert(0, CN_NEGATIVE);}// 输入的数字小数点后两位为"00"的情况,则要在最后追加特殊字符:整if (!(scale > 0)) {sb.append(CN_FULL);}return sb.toString();}}
}
到这里代码就写完了,点击【导出Word】按钮就会下载了。如图所示:
下载好后直接打开即可。Word部分内容如下:
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 阿里巴巴笔试题1.4
题目四: http://topic.csdn.net/u/20081012/14/3CC93688-1F7F-4985-806C-3F729C78261B.html有两个有序整数集合a和b,写一个函数找出它们的交集?Answer1: 第二题,时间复杂度O(n1+n2); int[] a = {2, 3, 4, 4, 4, 4, 7, 8, 8, 8, 8, 9, 100, 130, 150, 160}; int[] b = {4, …...
2024/4/12 16:49:10 - STL源码剖析--读书笔记(1)
写在前面的话 近段时间看了侯捷老师的《STL源码剖析》,看第一遍的时候一头雾水,反复多看几遍,似乎明白了一些。因此将学到的知识做一个记录,也算是记录自己的学习过程。本系列博客主要记录一些宏观理解性的东西,具体的代码实现还是要仔细品味原书。 概览 STL即C++标准模板…...
2024/4/27 23:03:04 - 科大讯飞纯离线语音合成的快速集成
1,注册科大讯飞开发者,新建应用,下载离线语音合成SDK到本地2,将下载好的SDK中的jar,assets文件下的tts包,.so文件复制到项目中3,将下面的工具类复制到项目中/*** 语音合成器** @author kongqw*/ public class KqwSpeechSynthesizer {// Log标签private static final Str…...
2024/4/19 21:25:05 - [JavaWeb实训Day1]Windows10+JDK1.8.0+Tomcat9.0.8配置教程
目录一、安装 EclipseJee二、配置JDK和Tomcat环境变量三、Helloworld 快速链接:【JavaWeb项目实训】——总目录JavaWeb实训第一天: eclipseJEE安装+配置Tomcat+项目环境搭建一、安装 EclipseJee 下载链接:Eclipse官网 安装教程:EclipseJee百度安装教程 我的参考安装目录:二…...
2024/4/12 16:49:16 - 《STL源码剖析》笔记-set
上一篇:《STL源码剖析》笔记-RB-tree set容器的特性就是所有元素都会根据键值进行自动排序,和map不同的是set的键值就是实值。并且通过set的迭代器无法改变set的键值,因为改变键值会打破set的排序。set排序的特性能够由rb-tree实现且所需接口rb-tree都已经提供,所以set底层…...
2024/4/12 16:49:11 - java 纯后台分页,MySQL数据库
因为课程设计要用到分页,所以百度了一下java后台分页的逻辑。一下是我找到的一篇比较好的关于java后台分页的博客。一、分页的思路 首先我们得知道写分页代码时的思路,保持思路清晰,有步骤的进行,才能行云如水。先来看看分页的效果 …...
2024/4/27 21:25:58 - 神经网络语音合成模型介绍
最近一段时间主要做语音合成相关项目,学习了几种端到端神经网络语音合成模型,在这里做一个简要介绍。主要内容如下:-语音合成简介-线性谱与梅尔谱- Tacotron- Deepvoice 3- Tacotron 2- Wavenet- Parallel Wavenet- Clarinet-总结语音合成简介语音合成,Text To Speech(TTS)…...
2024/4/20 4:51:32 - 本地代码提交到Github上
第一步:在桌面右键选择git bash here,然后cd命令切换到本地项目的根目录下。然后输入:git init,表示初始化一个git仓库。第二步:将项目的所有文件添加至仓库中 git add .这个命令行会将当前路径下的所有文件添加至仓库中。第三步:将add的文件先commit到本地仓库 git comm…...
2024/4/28 1:22:36 - IDEA2020新建javaweb项目
IDEA2020新建javaweb项目 IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说…...
2024/4/19 15:16:59 - 通用分页工具类
通用分页工具类最近自己写了一套分页类,和大家分享下,请多多支持。分页详细介绍,首先在即设置每页要显示的条数。通过前台传参获取当前页显示的页数计算出上一页、下一页,第一页,最后一页,页面要显示可选择的页数 等信息(此方法在pagenation.java)。 然后将查询出的li…...
2024/4/20 9:59:59 - 2019 阿里巴巴模拟笔试题
题目 国内最大的web站点统计服务商CNZZ监测某客户站点正在进行首页广告位更新,该首页有n个广告位,有3种广告(A,B,C) ,A广告占用1个广告位,B广告占用2个广告位; C广告占用3个;广告连在一起,可任意组合,为了保证首页的美观,A广告的左右相邻不能出现A广告,B和C则无限制。问…...
2024/4/12 16:49:36 - STL源码剖析---关联容器
STL源码剖析---关联容器标准关联容器分为set和map两大类,包括multiset和multimap,这些容器的底层机制都是RB-tree.标准之外的关联容器有hashtable 以及以此hash table为底层机制而完成的hash_set(散列集合) hash_map(散列映射表) hash_multiset hash_multimap. 序列和关联容…...
2024/4/18 15:31:05 - 讯飞C/C++语音合成基础篇
首先到讯飞上注册一个帐号(感觉讯飞官网和阿里云官网的差不多)随后创建一个新应用(Windows平台下)最后我们要的是Appid如下图所示下面是讯飞SDK(含说明文档)下载地址: 链接:http://pan.baidu.com/s/1i45xEo1 密码:m8il因为此程序涉及WAV语音知识,未了解WAV的朋友请百度补充…...
2024/4/9 11:06:53 - T-SQL查询笔记3:三值逻辑
在SQL中谓词(逻辑表达式)的可能取值有TRUE、FALSE和UNKNOWN,这就是所谓的三值逻辑。UNKNOWN逻辑通常出现在涉及NULL值的逻辑表达式中,NULL代表一种缺失的值,当把一个缺失的值和另一个值(这个值也可能是NULL)进行比较时,逻辑结果总是UNKNOWN。查询筛选器(ON WHERE HAVING)都…...
2024/4/5 0:55:15 - 导入一个JavaWeb项目到Eclipse
1、将项目根目录导入File->Import->General->Existing Projects into Workspace 2、对Web-INF->lib下的jar表进行 Build Path->Add to Build Path操作成功后可以在Java Resources->Libraries中找到,也可以在Java Resources->Libraries->Web App Libra…...
2024/4/12 16:50:00 - es分页解决方案——(from+size)分页和深分页
from+size分页 按照一般的查询流程来说,如果我想查询前10条数据:1 客户端请求发给某个节点 2 节点转发给个个分片,查询每个分片上的前10条 3 结果返回给节点,整合数据,提取前10条 4 返回给请求客户端该分页方式可以通过from+size的方式来进行实现。 from定义了目标数据的偏…...
2024/4/12 16:50:20 - 笔试面试(2)阿里巴巴2014秋季校园招聘-软件研发工程师笔试题详解
第一部分: 单选题 1. 假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数A: h(K)=K/N;B: h(K)=1;C: h(K)=K mod N;D: h(K)=(K+rand(N)) mod N, rand(N)返回0到N-1的整数 解析:首先,D最复杂,当然首选D。。D选项使用的是随机数法+除留余数法。开放地扯法: 公…...
2024/4/13 5:27:56 - 原始人的除法引发的闲聊
现在有多少人知道乘法和除法是怎么一回事。Oh!NO!乘法口诀小学生都会,除法是乘法的逆运算,有超级详细的竖式演算规则,好像是小学三年级前的四则混合运算章节里教的...然而我要说的是,大错特错!你学会的仅仅是现成的规则而已,它只是告诉你具体怎么操作可能计算出正确的结…...
2024/4/12 16:50:10 - 使用IDEA创建JavaWeb项目
由于看的视频教程比较老,且开发工具为Eclipse,本人已习惯使用IDEA,在此记录一下创建JavaWeb项目过程。创建一个项目左侧选择 Java Enterprise,右侧选择 Web Application这里我输入的项目名字为 FirstJavaWeb ,点击 next 后生成如下的项目结构:项目配置在 web 目录下的 WE…...
2024/4/20 17:03:19 - 阿里巴巴2018春招笔试编程题
阿里巴巴2018春招笔试编程题昨天做了阿里巴巴春招Java研发岗位的笔试,首先还是想要吐槽一下这次笔试,选择题各种机器学习、神经网络,外加概率题、智力题,就是没有任何一个Java相关的题目,让我不禁怀疑是不是投错了岗位。编程题也总觉得有些细节描述不是特别准确,甚至可能…...
2024/4/20 18:05:40
最新文章
- springcloud按版本发布微服务达到不停机更新的效果
本文基于以下环境完成 spring-boot 2.3.2.RELEASEspring-cloud Hoxton.SR9spring-cloud-alibaba 2.2.6.RELEASEspring-cloud-starter-gateway 2.2.6.RELEASEspring-cloud-starter-loadbalancer 2.2.6.RELEASEnacos 2.0.3 一、思路 实现思路: 前端项目在请求后端接…...
2024/4/28 1:36:56 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - app上架-您的应用存在最近任务列表隐藏风险活动的行为,不符合华为应用市场审核标准。
上架提示 您的应用存在最近任务列表隐藏风险活动的行为,不符合华为应用市场审核标准。 修改建议:请参考测试结果进行修改。 请参考《审核指南》第2.19相关审核要求:https://developer.huawei.com/consumer/cn/doc/app/50104-02 造成原因 …...
2024/4/26 2:20:33 - spark on hive
由于spark不存在元数据管理模块,为了能方便地通过sql操作hdfs数据,我们可以通过借助hive的元数据管理模块实现。对于hive来说,核心组件包含两个: sql优化翻译器,翻译sql到mapreduce并提交到yarn执行metastore…...
2024/4/27 18:57:26 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/26 18:09:39 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/26 20:12:18 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/26 23:05:52 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/27 4:00:35 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/27 9:01:45 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/28 1:22:35 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/25 18:39:14 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/26 23:04:58 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/25 18:39:00 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/26 19:46:12 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/27 11:43:08 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/27 8:32:30 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57