import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Workbook;
import org.junit.Test;
import com.cdjdgm.dip.excelimp.core.RowData;
public String superOrSubScript2003(Cell cell, Workbook book) {
HSSFWorkbook workbook = null;
HSSFFont font = null;
HSSFRichTextString rts = null;
HSSFCellStyle style = null;
int fromIndex = 0;
int toIndex = 0;
String value = "";
// 处理上下标
workbook = (HSSFWorkbook) book;
// 判断当前单元格的内容是否为数字类型,如果是转换成字符串型
if (cell != null && cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
cell.setCellValue(getStringCellValue(cell));
}
// 获取单元格中的数据
if (cell != null) {
rts = (HSSFRichTextString) cell.getRichStringCellValue();
// 获取每个单元格数据的style属性
style = (HSSFCellStyle) cell.getCellStyle();
font = style.getFont(workbook);
}
if (rts != null && rts.numFormattingRuns() > 0) {
for (int k = 0; k < rts.numFormattingRuns(); k++) {
toIndex = rts.getIndexOfFormattingRun(k);
String temp = rts.toString().substring(fromIndex, toIndex);
System.out.println("\tSubstring [" + temp + "]");
// 判断上标
if (font.getTypeOffset() == HSSFFont.SS_SUPER) {
temp = "<sup>" + temp + "</sup>";
System.out.println("\t______________发现上标");
}
// 判断下标
if (font.getTypeOffset() == HSSFFont.SS_SUB) {
temp = "<sub>" + temp + "</sub>";
System.out.println("\t______________发现下标");
}
value += temp;
if (!value.equals("")) {
font = workbook.getFontAt(rts.getFontOfFormattingRun(k));
}
fromIndex = toIndex;
}
toIndex = rts.length();
String temp1 = rts.toString().substring(fromIndex, toIndex);
System.out.println("\tSubstring [" + temp1 + "]");
if (font.getTypeOffset() == HSSFFont.SS_SUPER) {
temp1 = "<sup>" + temp1 + "</sup>";
System.out.println("\t______________发现上标");
}
if (font.getTypeOffset() == HSSFFont.SS_SUB) {
temp1 = "<sub>" + temp1 + "</sub>";
System.out.println("\t______________发现下标");
}
value += temp1;
return value;
}
if (cell != null) {
return cell.toString();
} else {
return "";
}
}
/**
* 获取Cell的内容
*
* @param cell
* @return
*/
public String getStringCellValue(Cell cell) {
String cellvalue = "";
if (cell == null) {
return "";
}
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
cellvalue = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
// 处理日期格式 没有测试
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = cell.getDateCellValue();
cellvalue = sdf.format(date);
} else {
cellvalue = String.valueOf(cell.getNumericCellValue());
}
break;
case Cell.CELL_TYPE_BOOLEAN:
cellvalue = String.valueOf(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_BLANK:
cellvalue = "";
break;
default:
cellvalue = "";
break;
}
if (cellvalue == "") {
return "";
}
return cellvalue;
}
public String superOrSubScript2007(Cell cell, Workbook book) {
XSSFWorkbook workbook = null;
XSSFFont font = null;
XSSFRichTextString rts = null;
XSSFCellStyle style = null;
int runIndex = 0;
int runLength = 0;
String value = "";
// 处理上下标
workbook = (XSSFWorkbook) book;
// 判断当前单元格的内容是否为数字类型,如果是转换成字符串型
if (cell != null && cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
String stringCellValue = eu.getStringCellValue(cell);
cell.setCellValue(stringCellValue);
}
// 获取单元格中的数据
if (cell != null) {
rts = (XSSFRichTextString) cell.getRichStringCellValue();
style = (XSSFCellStyle) cell.getCellStyle();
font = style.getFont();
}
if (rts.numFormattingRuns() > 1) {
for (int k = 0; k < rts.numFormattingRuns(); k++) {
runLength = rts.getLengthOfFormattingRun(k);
runIndex = rts.getIndexOfFormattingRun(k);
String temp = rts.toString().substring(runIndex, (runIndex + runLength));
System.out.println("\tSubstring [" + temp + "]");
try {
font = rts.getFontOfFormattingRun(k);
font.getTypeOffset();
} catch (NullPointerException npe) {
font = workbook.getFontAt(XSSFFont.DEFAULT_CHARSET);
font.setTypeOffset(XSSFFont.SS_NONE);
}
if (font.getTypeOffset() == XSSFFont.SS_SUPER) {
temp = "<sup>" + temp + "</sup>";
System.out.println("\t______________发现上标");
}
if (font.getTypeOffset() == XSSFFont.SS_SUB) {
temp = "<sub>" + temp + "</sub>";
System.out.println("\t______________发现下标");
}
value += temp;
}
return value;
}
return cell.toString();
}