java使用poi自定義excel標(biāo)題頭并導(dǎo)出方式
更新時(shí)間:2025年04月09日 15:44:07 作者:jilke
這篇文章主要介紹了java使用poi自定義excel標(biāo)題頭并導(dǎo)出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
java使用poi自定義excel標(biāo)題頭并導(dǎo)出
- 1、創(chuàng)建XSSFWorkbook對(duì)象(也就是excel文檔對(duì)象)
- 2、通過(guò)XSSFWorkbook對(duì)象創(chuàng)建sheet對(duì)象(也就是excel中的sheet)
- 3、通過(guò)sheet對(duì)象創(chuàng)建XSSFRow對(duì)象(row行對(duì)象)
- 4、通過(guò)XSSFRow對(duì)象創(chuàng)建列cell并set值(列名)
- 5、處理數(shù)據(jù)循環(huán)表頭(業(yè)務(wù)需要)
service impl層
@Override
public StatisticalReportResultDTO getStatisticalExcelReport(StatisticalReportQuery query) {
// 查詢條件
StatisticalReportPageVO queryVO = StatisticalReportConverter.queryToDO(query);
LambdaQueryWrapper<StatisticalReportPageVO> queryWrapper = new LambdaQueryWrapper<StatisticalReportPageVO>();
// 年月 轉(zhuǎn)換為 時(shí)間段
if (query.getStatisticalPeriodStartTime() != null && query.getStatisticalPeriodEndTime() != null) {
queryVO.setStatisticalPeriodStartTime(query.getStatisticalPeriodStartTime());
queryVO.setStatisticalPeriodEndTime(query.getStatisticalPeriodEndTime());
}
if (StringUtils.isNotBlank(query.getTaxId())) {
String[] taxIds = query.getTaxId().split(",");
queryVO.setTaxId(taxIds);
}
queryWrapper.setEntity(queryVO);
// 列表
List<StatisticalReportDTO> list = statisticalReportMapper.getStatisticalExcelReport(queryWrapper);
StatisticalReportResultDTO statisticalReportResultDTO = new StatisticalReportResultDTO();
StatisticalReportDTO total = new StatisticalReportDTO();
if (CollectionUtils.isNotEmpty(list)) {
BigDecimal zero = BigDecimal.ZERO;
BigDecimal amount = zero, districtRetainedAmount = zero, districtIncentiveAmountReceivable = zero, districtRewardAmountActuallyReceived = zero, tnIncome = zero,
intermediaryIncome = zero, enterpriseIncome = zero;
for (StatisticalReportDTO vo : list) {
//比例回顯
if (vo.getDistrictRetentionRatio() != null) {
BigDecimal districtRetentionRatio = vo.getDistrictRetentionRatio();
BigDecimal percentage = new BigDecimal(100);
BigDecimal newDistrictRetentionRatio = districtRetentionRatio.multiply(percentage).setScale(2, RoundingMode.HALF_UP);//保留兩位小數(shù);
vo.setDistrictRetentionRatio(newDistrictRetentionRatio);
}
if (vo.getDistrictRewardRatio() != null) {
BigDecimal districtRewardRatio = vo.getDistrictRewardRatio();
BigDecimal percentage = new BigDecimal(100);
BigDecimal newDistrictRewardRatio = districtRewardRatio.multiply(percentage).setScale(2, RoundingMode.HALF_UP);//保留兩位小數(shù);
vo.setDistrictRewardRatio(newDistrictRewardRatio);
}
// 計(jì)算總合計(jì)
amount = amount.add(vo.getAmount() != null ? vo.getAmount() : zero);
districtRetainedAmount = districtRetainedAmount.add(vo.getDistrictRetainedAmount() != null ? vo.getDistrictRetainedAmount() : zero);
districtIncentiveAmountReceivable = districtIncentiveAmountReceivable
.add(vo.getDistrictIncentiveAmountReceivable() != null ? vo.getDistrictIncentiveAmountReceivable() : zero);
districtRewardAmountActuallyReceived = districtRewardAmountActuallyReceived
.add(vo.getDistrictRewardAmountActuallyReceived() != null ? vo.getDistrictRewardAmountActuallyReceived() : zero);
tnIncome = tnIncome.add(vo.getTnIncome() != null ? vo.getTnIncome() : zero);
intermediaryIncome = intermediaryIncome.add(vo.getIntermediaryIncome() != null ? vo.getIntermediaryIncome() : zero);
enterpriseIncome = enterpriseIncome.add(vo.getEnterpriseIncome() != null ? vo.getEnterpriseIncome() : zero);
}
total.setAmount(amount);
total.setDistrictRewardAmountActuallyReceived(districtRewardAmountActuallyReceived);
total.setDistrictRetainedAmount(districtRetainedAmount);
total.setDistrictIncentiveAmountReceivable(districtIncentiveAmountReceivable);
total.setTnIncome(tnIncome);
total.setIntermediaryIncome(intermediaryIncome);
total.setEnterpriseIncome(enterpriseIncome);
}
statisticalReportResultDTO.setList(list);
statisticalReportResultDTO.setTotal(total);
return statisticalReportResultDTO;
}controller層
/**
* @description excel導(dǎo)出數(shù)據(jù)
* @version 1.0
* @author jlk
* @date 2022年01月27日
* @param query
*/
@ApiOperation(value = "獲取Excel導(dǎo)出數(shù)據(jù) 作者:jlk 日期: 2022年01月27日")
@GetMapping(value = "/getExcelExport")
public void getExcelExport(HttpServletRequest request, HttpServletResponse response, StatisticalReportQuery query) {
StatisticalReportResultDTO statisticalReportResultDTO = statisticalReportService.getStatisticalExcelReport(query);
List<StatisticalReportConditionDTO> statisticalReportConditionDTOList = statisticalReportService.getExcelReportCondition(query);
String fileName = "總部經(jīng)濟(jì)-統(tǒng)計(jì)報(bào)表" + System.currentTimeMillis();
//調(diào)用poi導(dǎo)出Excel
ExcelUtil.poiExportExcel(statisticalReportResultDTO, statisticalReportConditionDTOList, query, fileName, response);
}ExcelUtil工具類
@SuppressWarnings("resource")
public static void poiExportExcel(StatisticalReportResultDTO statisticalReportResultDTO, List<StatisticalReportConditionDTO> statisticalReportConditionDTOList,
StatisticalReportQuery query, String fileName, HttpServletResponse response) {
try {
List<StatisticalReportDTO> statisticalReportList = statisticalReportResultDTO.getList();
XSSFWorkbook wb = new XSSFWorkbook();
XSSFRow row = null;
XSSFCell cell = null;
// 建立新的sheet對(duì)象(excel的表單) 并設(shè)置sheet名字
XSSFSheet sheet = wb.createSheet("統(tǒng)計(jì)報(bào)表");
sheet.setDefaultRowHeightInPoints(20);
sheet.setDefaultColumnWidth(12);
//----------------標(biāo)題樣式--------------------------------
XSSFCellStyle titleStyle = wb.createCellStyle(); //標(biāo)題樣式
titleStyle.setAlignment(HorizontalAlignment.CENTER);
titleStyle.setVerticalAlignment(VerticalAlignment.CENTER);
Font ztFont = wb.createFont();
ztFont.setItalic(false); // 設(shè)置字體為斜體字
//ztFont.setColor(Font.COLOR_NORMAL); // 將字體設(shè)置為“紅色”
ztFont.setFontHeightInPoints((short) 16); // 將字體大小設(shè)置為18px
ztFont.setFontName("宋體"); // 將“宋體”字體應(yīng)用到當(dāng)前單元格上
ztFont.setBold(true); //加粗
//ztFont.setUnderline(Font.U_DOUBLE);// 添加(Font.U_SINGLE單條下劃線/Font.U_DOUBLE雙條下劃線)
//ztFont.setStrikeout(true);// 是否添加刪除線
titleStyle.setFont(ztFont);
//------------------------------------------------------------
//----------------二級(jí)標(biāo)題格樣式----------------------------------
XSSFCellStyle titleStyle2 = wb.createCellStyle(); //表格樣式
titleStyle2.setAlignment(HorizontalAlignment.CENTER);
titleStyle2.setVerticalAlignment(VerticalAlignment.CENTER);
titleStyle2.setBorderBottom(BorderStyle.THIN);//下邊框
titleStyle2.setBorderLeft(BorderStyle.THIN);//左邊框
titleStyle2.setBorderRight(BorderStyle.THIN);//右邊框
titleStyle2.setBorderTop(BorderStyle.THIN);//上邊框
Font ztFont2 = wb.createFont();
ztFont2.setItalic(false); // 設(shè)置字體為斜體字
ztFont2.setColor(Font.COLOR_NORMAL); // 將字體設(shè)置為“紅色”
ztFont2.setFontHeightInPoints((short) 10); // 將字體大小設(shè)置為18px
ztFont2.setFontName("宋體"); // 字體應(yīng)用到當(dāng)前單元格上
ztFont2.setBold(true); //加粗
//ztFont.setUnderline(Font.U_DOUBLE);// 添加(Font.U_SINGLE單條下劃線/Font.U_DOUBLE雙條下劃線)
//ztFont.setStrikeout(true);// 是否添加刪除線
titleStyle2.setFont(ztFont2);
titleStyle2.setWrapText(true);//設(shè)置自動(dòng)換行
//----------------------------------------------------------
//----------------單元格樣式-----------------------------------
XSSFCellStyle cellStyle = wb.createCellStyle(); //表格樣式
cellStyle.setAlignment(HorizontalAlignment.CENTER);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyle.setBorderBottom(BorderStyle.THIN);//下邊框
cellStyle.setBorderLeft(BorderStyle.THIN);//左邊框
cellStyle.setBorderRight(BorderStyle.THIN);//右邊框
cellStyle.setBorderTop(BorderStyle.THIN);//上邊框
Font cellFont = wb.createFont();
cellFont.setItalic(false); // 設(shè)置字體為斜體字
cellFont.setColor(Font.COLOR_NORMAL); // 將字體設(shè)置為“紅色”
cellFont.setFontHeightInPoints((short) 9); // 將字體大小設(shè)置為18px
cellFont.setFontName("宋體"); // 字體應(yīng)用到當(dāng)前單元格上
cellStyle.setFont(cellFont);
cellStyle.setWrapText(true);//設(shè)置自動(dòng)換行
//----------------------------------------------------------
// ----------------------創(chuàng)建第一行----------------------------
// 在sheet里創(chuàng)建第一行,參數(shù)為行索引(excel的行),可以是0~65535之間的任何一個(gè)
row = sheet.createRow(0);
// 創(chuàng)建單元格(excel的單元格,參數(shù)為列索引,可以是0~255之間的任何一個(gè)
cell = row.createCell(0);
// 合并單元格CellRangeAddress構(gòu)造參數(shù)依次表示起始行,截至行,起始列, 截至列
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 10));
// 設(shè)置單元格內(nèi)容
String titleName = "天能招引企業(yè)財(cái)政獎(jiǎng)勵(lì)及分配明細(xì)";
if (query.getStatisticalPeriodStartTime() != null && query.getStatisticalPeriodEndTime() != null) {
LocalDateTime startTime = query.getStatisticalPeriodStartTime();
LocalDateTime endTime = query.getStatisticalPeriodEndTime();
String startY = String.valueOf(startTime.getYear());
String startM = String.valueOf(startTime.getMonthValue());
String endY = String.valueOf(endTime.getYear());
String endM = String.valueOf(endTime.getMonthValue());
titleName = titleName + "(" + startY + "年" + startM + "月-" + endY + "年" + endM + "月)";
}
cell.setCellValue(titleName);
cell.setCellStyle(titleStyle);
// --------------------------------------------------
// ------------------處理數(shù)據(jù)start---------------------
if (CollectionUtils.isNotEmpty(statisticalReportConditionDTOList)) {
int rowNum = 1;
for (int i = 0; i < statisticalReportConditionDTOList.size(); i++) {
StatisticalReportConditionDTO statisticalReportConditionDTO = statisticalReportConditionDTOList.get(i);
String name = "";
if (!StringUtils.isEmpty(statisticalReportConditionDTO.getDealerName())) {
name = statisticalReportConditionDTO.getDealerName();
}
rowNum = rowNum + i;
creatCell(sheet, row, cell, titleStyle2, rowNum, name);
rowNum = rowNum + 1;
if (CollectionUtils.isNotEmpty(statisticalReportList)) {
BigDecimal zero = BigDecimal.ZERO;
BigDecimal amount = zero, districtRetainedAmount = zero, districtIncentiveAmountReceivable = zero, districtRewardAmountActuallyReceived = zero,
tnIncome = zero, intermediaryIncome = zero, enterpriseIncome = zero;
int mergeSize = 0;
String dealerId = "";
for (int j = 0; j < statisticalReportList.size(); j++) {
List<Object> data = new ArrayList<>();
int size = 0;
StatisticalReportDTO statisticalReportDTO = statisticalReportList.get(j);
if (statisticalReportConditionDTO.getEnterpriseId().equals(statisticalReportDTO.getEnterpriseId())
&& statisticalReportConditionDTO.getStatisticalYear().equals(statisticalReportDTO.getStatisticalYear())
&& statisticalReportConditionDTO.getStatisticsQuarter().equals(statisticalReportDTO.getStatisticsQuarter())) {
dealerId = statisticalReportDTO.getDealerId();
// 計(jì)算總合計(jì)
amount = amount.add(statisticalReportDTO.getAmount() != null ? statisticalReportDTO.getAmount() : zero);
districtRetainedAmount = districtRetainedAmount
.add(statisticalReportDTO.getDistrictRetainedAmount() != null ? statisticalReportDTO.getDistrictRetainedAmount() : zero);
districtIncentiveAmountReceivable = districtIncentiveAmountReceivable.add(
statisticalReportDTO.getDistrictIncentiveAmountReceivable() != null ? statisticalReportDTO.getDistrictIncentiveAmountReceivable() : zero);
districtRewardAmountActuallyReceived = districtRewardAmountActuallyReceived.add(
statisticalReportDTO.getDistrictRewardAmountActuallyReceived() != null ? statisticalReportDTO.getDistrictRewardAmountActuallyReceived() : zero);
tnIncome = tnIncome.add(statisticalReportDTO.getTnIncome() != null ? statisticalReportDTO.getTnIncome() : zero);
intermediaryIncome = intermediaryIncome
.add(statisticalReportDTO.getIntermediaryIncome() != null ? statisticalReportDTO.getIntermediaryIncome() : zero);
enterpriseIncome = enterpriseIncome.add(statisticalReportDTO.getEnterpriseIncome() != null ? statisticalReportDTO.getEnterpriseIncome() : zero);
data.add(statisticalReportDTO.getEnterpriseName());
data.add(statisticalReportDTO.getTaxName());
data.add(retain2Decimals(statisticalReportDTO.getAmount()));
data.add(statisticalReportDTO.getDistrictRetentionRatio() + "%");
data.add(retain2Decimals(statisticalReportDTO.getDistrictRetainedAmount()));
data.add(statisticalReportDTO.getDistrictRewardRatio() + "%");
data.add(retain2Decimals(statisticalReportDTO.getDistrictIncentiveAmountReceivable()));
data.add(retain2Decimals(statisticalReportDTO.getTnIncome()));
if(!StringUtils.isEmpty(statisticalReportDTO.getDealerId())){
data.add(retain2Decimals(statisticalReportDTO.getIntermediaryIncome()));
}else{
data.add("");
}
data.add(retain2Decimals(statisticalReportDTO.getEnterpriseIncome()));
if (!StringUtils.isEmpty(statisticalReportDTO.getRemark())) {
data.add(statisticalReportDTO.getRemark());
} else {
data.add("");
}
mergeSize++;
size++;
rowNum = rowNum + size; //從第三行開始
row = sheet.createRow(rowNum);
for (int k = 0; k < data.size(); k++) { //將數(shù)據(jù)添加到單元格中
cell = row.createCell(k);
cell.setCellValue("" + data.get(k) + "");
cell.setCellStyle(cellStyle);
}
}
}
if (mergeSize > 0) {
rowNum = rowNum + 1;
row = sheet.createRow(rowNum);
cell = row.createCell(0);
cell.setCellStyle(cellStyle);
cell = row.createCell(1);
cell.setCellValue("小計(jì)(元)");
cell.setCellStyle(cellStyle);
cell = row.createCell(2);
cell.setCellValue("" + retain2Decimals(amount) + "");
cell.setCellStyle(cellStyle);
cell = row.createCell(3);
cell.setCellStyle(cellStyle);
cell = row.createCell(4);
cell.setCellValue("" + retain2Decimals(districtRetainedAmount) + "");
cell.setCellStyle(cellStyle);
cell = row.createCell(5);
cell.setCellStyle(cellStyle);
cell = row.createCell(6);
cell.setCellValue("" + retain2Decimals(districtIncentiveAmountReceivable) + "");
cell.setCellStyle(cellStyle);
cell = row.createCell(7);
cell.setCellValue("" + retain2Decimals(tnIncome) + "");
cell.setCellStyle(cellStyle);
cell = row.createCell(8);
if(!StringUtils.isEmpty(dealerId)){
cell.setCellValue("" + retain2Decimals(intermediaryIncome) + "");
}
cell.setCellStyle(cellStyle);
cell = row.createCell(9);
cell.setCellValue("" + retain2Decimals(enterpriseIncome) + "");
cell.setCellStyle(cellStyle);
cell = row.createCell(10);
cell.setCellStyle(cellStyle);
sheet.addMergedRegion(new CellRangeAddress(rowNum - mergeSize, rowNum, 0, 0));
sheet.addMergedRegion(new CellRangeAddress(rowNum - mergeSize, rowNum, 10, 10));
}
}
}
StatisticalReportDTO total = statisticalReportResultDTO.getTotal();
if (total != null) {
rowNum = rowNum + 1;
row = sheet.createRow(rowNum);
XSSFCellStyle cellStyleTotal = wb.createCellStyle(); //表格樣式
cellStyleTotal.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
cellStyleTotal.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cellStyleTotal.setAlignment(HorizontalAlignment.CENTER);
cellStyleTotal.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyleTotal.setBorderBottom(BorderStyle.THIN);//下邊框
cellStyleTotal.setBorderLeft(BorderStyle.THIN);//左邊框
cellStyleTotal.setBorderRight(BorderStyle.THIN);//右邊框
cellStyleTotal.setBorderTop(BorderStyle.THIN);//上邊框
cellStyleTotal.setFont(cellFont);
cellStyleTotal.setWrapText(true);//設(shè)置自動(dòng)換行
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, 0, 1));
cell = row.createCell(0);
cell.setCellValue("合計(jì)");
cell.setCellStyle(cellStyleTotal);
cell = row.createCell(1);
cell.setCellStyle(cellStyleTotal);
cell = row.createCell(2);
cell.setCellValue("" + retain2Decimals(total.getAmount()) + "");
cell.setCellStyle(cellStyleTotal);
cell = row.createCell(3);
cell.setCellStyle(cellStyleTotal);
cell = row.createCell(4);
cell.setCellValue("" + retain2Decimals(total.getDistrictRetainedAmount()) + "");
cell.setCellStyle(cellStyleTotal);
cell = row.createCell(5);
cell.setCellStyle(cellStyleTotal);
cell = row.createCell(6);
cell.setCellValue("" + retain2Decimals(total.getDistrictIncentiveAmountReceivable()) + "");
cell.setCellStyle(cellStyleTotal);
cell = row.createCell(7);
cell.setCellValue("" + retain2Decimals(total.getTnIncome()) + "");
cell.setCellStyle(cellStyleTotal);
cell = row.createCell(8);
cell.setCellValue("" + retain2Decimals(total.getIntermediaryIncome()) + "");
cell.setCellStyle(cellStyleTotal);
cell = row.createCell(9);
cell.setCellValue("" + retain2Decimals(total.getEnterpriseIncome()) + "");
cell.setCellStyle(cellStyleTotal);
cell = row.createCell(10);
cell.setCellStyle(cellStyleTotal);
}
}
// ------------------處理數(shù)據(jù)end--------------------------------------
// 輸出Excel文件
response.reset();
OutputStream output = response.getOutputStream();
response.setHeader("Content-disposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1") + ".xlsx"); //filename = 文件名
response.setContentType("application/msexcel");
wb.write(output);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}循環(huán)插入表頭方法
private static void creatCell(XSSFSheet sheet, XSSFRow row, XSSFCell cell, XSSFCellStyle cellStyle, Integer rowNum, String name) {
// ------------------創(chuàng)建表頭start---------------------
row = sheet.createRow(rowNum); // 創(chuàng)建第二行
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum + 1, 0, 0));
cell = row.createCell(0);
cell.setCellValue("招引企業(yè)");
cell.setCellStyle(cellStyle);
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum + 1, 1, 1));
cell = row.createCell(1);
cell.setCellValue("稅種");
cell.setCellStyle(cellStyle);
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum + 1, 2, 2));
cell = row.createCell(2);
cell.setCellValue("金額");
cell.setCellStyle(cellStyle);
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum + 1, 3, 3));
cell = row.createCell(3);
cell.setCellValue("區(qū)留存比例");
cell.setCellStyle(cellStyle);
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum + 1, 4, 4));
cell = row.createCell(4);
cell.setCellValue("區(qū)留存金額");
cell.setCellStyle(cellStyle);
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum + 1, 5, 5));
cell = row.createCell(5);
cell.setCellValue("區(qū)獎(jiǎng)勵(lì)比例");
cell.setCellStyle(cellStyle);
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum + 1, 6, 6));
cell = row.createCell(6);
cell.setCellValue("區(qū)獎(jiǎng)勵(lì)金額");
cell.setCellStyle(cellStyle);
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, 7, 9));
cell = row.createCell(7);
cell.setCellValue("獎(jiǎng)勵(lì)分配");
cell.setCellStyle(cellStyle);
cell = row.createCell(8);
cell.setCellStyle(cellStyle);
cell = row.createCell(9);
cell.setCellStyle(cellStyle);
sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum + 1, 10, 10));
cell = row.createCell(10);
cell.setCellValue("備注");
cell.setCellStyle(cellStyle);
//--------------------------- 創(chuàng)建第三行--------------------
row = sheet.createRow(rowNum + 1);
cell = row.createCell(0);
cell.setCellStyle(cellStyle);
cell = row.createCell(1);
cell.setCellStyle(cellStyle);
cell = row.createCell(2);
cell.setCellStyle(cellStyle);
cell = row.createCell(3);
cell.setCellStyle(cellStyle);
cell = row.createCell(4);
cell.setCellStyle(cellStyle);
cell = row.createCell(5);
cell.setCellStyle(cellStyle);
cell = row.createCell(6);
cell.setCellStyle(cellStyle);
cell = row.createCell(7);
cell.setCellValue("天能所得");
cell.setCellStyle(cellStyle);
cell = row.createCell(8);
cell.setCellValue(name + "(中介)");
cell.setCellStyle(cellStyle);
cell = row.createCell(9);
cell.setCellValue("公司所得");
cell.setCellStyle(cellStyle);
cell = row.createCell(10);
cell.setCellStyle(cellStyle);
//-------------------------表頭end---------------------
}業(yè)務(wù)需要保留2位小數(shù)方法
private static BigDecimal retain2Decimals(BigDecimal num) {
BigDecimal result = num.setScale(2, RoundingMode.HALF_UP);//保留兩位小數(shù)
return result;
}excel導(dǎo)出模版如下:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決spring-integration-mqtt頻繁報(bào)Lost connection錯(cuò)誤問(wèn)題
這篇文章主要介紹了解決spring-integration-mqtt頻繁報(bào)Lost connection錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Java實(shí)現(xiàn)視頻格式轉(zhuǎn)換的完整指南
在Java中實(shí)現(xiàn)視頻格式的轉(zhuǎn)換,通常需要借助第三方工具或庫(kù),因?yàn)橐曨l的編解碼操作復(fù)雜且性能需求較高,以下是實(shí)現(xiàn)視頻格式轉(zhuǎn)換的常用方法和步驟,需要的朋友可以參考下2025-05-05
Windows7下的Java運(yùn)行環(huán)境搭建過(guò)程圖解
這篇文章主要介紹了Windows7下的Java運(yùn)行環(huán)境搭建過(guò)程圖解,需要的朋友可以參考下2014-04-04
Java實(shí)戰(zhàn)之基于swing的QQ郵件收發(fā)功能實(shí)現(xiàn)
這篇文章主要介紹了Java實(shí)戰(zhàn)之基于swing的QQ郵件收發(fā)功能實(shí)現(xiàn),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
java使用URLDecoder和URLEncoder對(duì)中文字符進(jìn)行編碼和解碼
這篇文章主要介紹了java 使用 URLDecoder 和 URLEncoder 對(duì)中文字符進(jìn)行編碼和解碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Java中ASCII到十六進(jìn)制的轉(zhuǎn)換指南
在軟件開發(fā)、網(wǎng)絡(luò)通信與底層系統(tǒng)交互中,ASCII 字符與十六進(jìn)制表示之間的轉(zhuǎn)換是一項(xiàng)基礎(chǔ)且高頻的操作,本文將從計(jì)算機(jī)編碼的底層邏輯出發(fā),結(jié)合 Java 平臺(tái)的特性,系統(tǒng)探討 ASCII 轉(zhuǎn)十六進(jìn)制的核心機(jī)制、應(yīng)用場(chǎng)景、設(shè)計(jì)考量與最佳實(shí)踐,需要的朋友可以參考下2026-05-05

