Может ли Apache POI извлечь уникальное переименованное & ldquo; CodeName & rdquo; -значение листа?

Это сработало для меня. Трюк должен был перемещать цвет фона с основного вида на слой.

CALayer *layer = view.layer;
layer.cornerRadius = 15.0f;
layer.masksToBounds = NO;

layer.shadowOffset = CGSizeMake(0, 3);
layer.shadowColor = [[UIColor blackColor] CGColor];
layer.shadowRadius = 2.0f;
layer.shadowOpacity = 0.35f;
layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:layer.bounds cornerRadius:layer.cornerRadius] CGPath];

CGColorRef  bColor = view.backgroundColor.CGColor;
view.backgroundColor = nil;
layer.backgroundColor =  bColor ;
0
задан eirik 17 January 2019 в 12:13
поделиться

1 ответ

По крайней мере для Office Open XML (*.xlsx) кодовое имя листа сохраняется в /xl/worksheets/sheet[n].xml как <sheetPr codeName="TheCodeName"/>. Поэтому, по крайней мере, используя XSSFSheet, можно получить это, используя низкоуровневый базовый объект org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet.

Пример:

enter image description here

Код:

import java.io.FileInputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFSheet;

class ExcelGetSheetByCodeName {

 private static Sheet getSheetByCodeName(Workbook workbook, String codeName) {
  for (Sheet sheet : workbook) {
   if (sheet instanceof XSSFSheet) {
    XSSFSheet xssfSheet = (XSSFSheet)sheet;
System.out.println(xssfSheet.getCTWorksheet().getSheetPr().getCodeName());
    if (codeName.equals(xssfSheet.getCTWorksheet().getSheetPr().getCodeName())) {
     return xssfSheet;
    }
   } else {
    System.out.println("only XSSF implemented yet");
   }
  }
  return null;
 }

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

  Workbook workbook = WorkbookFactory.create(new FileInputStream("SAMPLE.xlsx")); 
  Sheet sheet = getSheetByCodeName(workbook, "TheCodeName");

System.out.println("found sheet: " + sheet);

 }
}

Результат:

axel@arichter:~/Dokumente/JAVA/poi/poi-4.0.1$ java -cp .:./*:./lib/*:./ooxml-lib/* ExcelGetSheetByCodeName 
Foo
TheCodeName
found sheet: Name: /xl/worksheets/sheet2.xml - Content Type: application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml
0
ответ дан Axel Richter 17 January 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: