如何在excel单元格SXSSFSheet java中添加检查符号

如何在excel单元格SXSSFSheet java中添加检查符号,java,excel,apache-poi,symbols,sxssf,Java,Excel,Apache Poi,Symbols,Sxssf,如果条件满足,我需要在此单元格中添加一个复选符号。以下是我的示例代码: private SXSSFWorkbook RepWkBook = null; private SXSSFSheet RepSheet = null; private int RepRowNum = 0; private ResultSet RepResult = null; private Row RepRow = null; RepSheet = RepWkBook.createSheet(reportType

如果条件满足,我需要在此单元格中添加一个复选符号。以下是我的示例代码:

private SXSSFWorkbook RepWkBook = null;
private SXSSFSheet RepSheet = null;
private int RepRowNum = 0;
private ResultSet RepResult = null;
private Row RepRow = null;

    RepSheet = RepWkBook.createSheet(reportType);
    RepRowNum = 0;
    Row row = RepSheet.createRow(RepRowNum++);
    CellStyle cellStyle = RepWkBook.createCellStyle();
    Font font = RepWkBook.createFont();
    font.setBold(true);
    cellStyle.setFont(font);cell = RepRow.createCell(col++);

        boolean isMOBhigherThanArea = RepResult.getString("IS_MOB_HIGHER_THAN_AREA").equalsIgnoreCase("1");

        char st = '\u2713';

        if(isMOBhigherThanArea && (!areaStr.equalsIgnoreCase("No Data") || !mobStr.equalsIgnoreCase("No Data"))) {
            cell.setCellValue(st);}
我已经用过了

UTF-16-feff2713

UTF-16BE-2713

UTF-16LE-1327

UTF-8-e29c93

预期产出样本

区域|移动目标|区域结果|移动>区域


城市| 85%| 80%|✔

我能想到的唯一方法是使用符号字体格式化单元格,作为卷轴,并在此字体中使用正确的字符作为检查符号。 因此,您的代码类似于:

Font font = RepWkBook.createFont();
font.setBold(true);

Font wingDingFont = RepWkBook.createFont();
wingDingFont.setBold(true);
wingDingFont.setFontName("Wingdings);

cell = RepRow.createCell(col++);

boolean isMOBhigherThanArea = RepResult.getString("IS_MOB_HIGHER_THAN_AREA").equalsIgnoreCase("1");

if(isMOBhigherThanArea && (!areaStr.equalsIgnoreCase("No Data") || !mobStr.equalsIgnoreCase("No Data"))) {
    String st = "ü";
    cellStyle.setFont(wingDingFont);
    cell.setCellValue(st);
} else {
    cellStyle.setFont(font);
}

我能想到的唯一方法是使用符号字体格式化单元格,作为卷轴,并在此字体中使用正确的字符作为检查符号。 因此,您的代码类似于:

Font font = RepWkBook.createFont();
font.setBold(true);

Font wingDingFont = RepWkBook.createFont();
wingDingFont.setBold(true);
wingDingFont.setFontName("Wingdings);

cell = RepRow.createCell(col++);

boolean isMOBhigherThanArea = RepResult.getString("IS_MOB_HIGHER_THAN_AREA").equalsIgnoreCase("1");

if(isMOBhigherThanArea && (!areaStr.equalsIgnoreCase("No Data") || !mobStr.equalsIgnoreCase("No Data"))) {
    String st = "ü";
    cellStyle.setFont(wingDingFont);
    cell.setCellValue(st);
} else {
    cellStyle.setFont(font);
}
试用

ChrW(&H2713)
(来源:)

尝试使用

ChrW(&H2713)

(来源:)

没有方法
setCellValue
接受
char
。尝试在那里使用
字符串

以下是我的作品:

import java.io.FileOutputStream;
import org.apache.poi.xssf.streaming.*;

class CreateSXSSFUnicode {

 public static void main(String[] args) throws Exception {

  char st = '\u2713';
  String[] headers = new String[] {"Area", "MOB Target", "Area Result", "MOB > Area"};

  try (SXSSFWorkbook workbook = new SXSSFWorkbook(); 
       FileOutputStream fileout = new FileOutputStream("Excel.xlsx") ) {

   SXSSFSheet sheet = workbook.createSheet(); 
   SXSSFRow row;

   int rowNum = 0;
   row = sheet.createRow(rowNum++);
   for (int c = 0; c < headers.length; c++) {
    row.createCell(c).setCellValue(headers[c]);
   }
   row = sheet.createRow(rowNum++);
   int c = 0;
   row.createCell(c++).setCellValue("City");
   row.createCell(c++).setCellValue("85%");
   row.createCell(c++).setCellValue("80%");
   //row.createCell(c++).setCellValue(st); // does not work as st is a char
   row.createCell(c++).setCellValue(String.valueOf(st)); // this works

   workbook.write(fileout);
   workbook.dispose();
  }
 }
}
import java.io.FileOutputStream;
导入org.apache.poi.xssf.streaming.*;
类createsxsfunicode{
公共静态void main(字符串[]args)引发异常{
char st='\u2713';
字符串[]头=新字符串[]{“区域”、“移动目标”、“区域结果”、“移动>区域”};
试试(SXSSFWorkbook工作簿=新的SXSSFWorkbook();
FileOutputStream fileout=新的FileOutputStream(“Excel.xlsx”)){
SXSSFSheet sheet=workbook.createSheet();
SXSFROW行;
int rowNum=0;
row=sheet.createRow(rowNum++);
for(int c=0;c
结果:


没有方法
setCellValue
接受
char
。尝试在那里使用
字符串

以下是我的作品:

import java.io.FileOutputStream;
import org.apache.poi.xssf.streaming.*;

class CreateSXSSFUnicode {

 public static void main(String[] args) throws Exception {

  char st = '\u2713';
  String[] headers = new String[] {"Area", "MOB Target", "Area Result", "MOB > Area"};

  try (SXSSFWorkbook workbook = new SXSSFWorkbook(); 
       FileOutputStream fileout = new FileOutputStream("Excel.xlsx") ) {

   SXSSFSheet sheet = workbook.createSheet(); 
   SXSSFRow row;

   int rowNum = 0;
   row = sheet.createRow(rowNum++);
   for (int c = 0; c < headers.length; c++) {
    row.createCell(c).setCellValue(headers[c]);
   }
   row = sheet.createRow(rowNum++);
   int c = 0;
   row.createCell(c++).setCellValue("City");
   row.createCell(c++).setCellValue("85%");
   row.createCell(c++).setCellValue("80%");
   //row.createCell(c++).setCellValue(st); // does not work as st is a char
   row.createCell(c++).setCellValue(String.valueOf(st)); // this works

   workbook.write(fileout);
   workbook.dispose();
  }
 }
}
import java.io.FileOutputStream;
导入org.apache.poi.xssf.streaming.*;
类createsxsfunicode{
公共静态void main(字符串[]args)引发异常{
char st='\u2713';
字符串[]头=新字符串[]{“区域”、“移动目标”、“区域结果”、“移动>区域”};
试试(SXSSFWorkbook工作簿=新的SXSSFWorkbook();
FileOutputStream fileout=新的FileOutputStream(“Excel.xlsx”)){
SXSSFSheet sheet=workbook.createSheet();
SXSFROW行;
int rowNum=0;
row=sheet.createRow(rowNum++);
for(int c=0;c
结果:


用Excel输入一个,用Apache POI读回文件,看看Excel选择了什么?如果您能提供一个可以执行的示例,这将对其他人有所帮助。有这个问题的小型回购协议会很好。我的预期优势是:区域|暴民目标|区域结果|暴民>区域城市| 85%| 80%|✔用Excel输入一个,用ApachePOI读回文件,看看Excel选择了什么?如果您能提供一个可以执行的示例,它将帮助其他人。有这个问题的小型回购协议会很好。我的预期优势是:区域|暴民目标|区域结果|暴民>区域城市| 85%| 80%|✔仍然显示问号图标。我应该添加“Wingdings”字体吗?如何在代码中添加“Wingdings”字体?Wingdings是一种Windows Olly字体。我必须存在于工作表的读卡器系统中,但仍显示问号图标。我应该添加“Wingdings”字体吗?如何在代码中添加“Wingdings”字体?Wingdings是一种Windows Olly字体。我必须存在于工作表的阅读系统中。请确保接受答案以关闭帖子,并向其他人展示解决方案(如果他们有类似问题)。请确保接受答案以关闭帖子,并向其他人展示解决方案(如果他们有类似问题)。