Создание CellRangeAddress
для всего столбца, кроме первой строки, означает, что CellRangeAddress
начинается со строки 2 и идет до максимального количества строк. Это зависит от SpreadsheetVersion
. В EXCEL2007
максимальное количество строк составляет 2 ^ 20 = 1048576. В EXCEL97
максимальное количество строк составляет 2 ^ 16 = 65536.
Используя SpreadsheetVersion , мы можем получить это различное максимальное количество строк в зависимости от SpreadsheetVersion
.
Пример:
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.ss.SpreadsheetVersion;
class CreateCellRangeAddressList {
public static void main(String[] args) throws Exception {
//Workbook workbook = new XSSFWorkbook();
Workbook workbook = new HSSFWorkbook();
// ...
int lastRow = workbook.getSpreadsheetVersion().getLastRowIndex();
CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(
1, // row 2
lastRow,
2, // column C
2);
System.out.println(cellRangeAddressList.getCellRangeAddress(0));
//C2:C1048576 or C2:C65536 dependent on SpreadsheetVersion
// ...
}
}
Поскольку вопрос был о проверке данных для всего столбца, кроме первой строки, давайте рассмотрим пример для этого.
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddressList;
class CreateExcelDataValidationListsWholeColumn {
public static void main(String[] args) throws Exception {
//Workbook workbook = new HSSFWorkbook();
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
sheet.createRow(0).createCell(1).setCellValue("col2Head");
//data validation in column B, except first row:
DataValidationHelper dvHelper = sheet.getDataValidationHelper();
DataValidationConstraint dvConstraint = dvHelper.createExplicitListConstraint(new String[]{"X", "Y"}) ;
int lastRow = workbook.getSpreadsheetVersion().getLastRowIndex();
CellRangeAddressList addressList = new CellRangeAddressList(1, lastRow, 1, 1); //B2:B1048576
DataValidation validation = dvHelper.createValidation(dvConstraint, addressList);
sheet.addValidationData(validation); // data validation for B2:B1048576
FileOutputStream out = null;
if (workbook instanceof HSSFWorkbook) {
out = new FileOutputStream("CreateExcelDataValidationListsWholeColumn.xls");
} else if (workbook instanceof XSSFWorkbook) {
out = new FileOutputStream("CreateExcelDataValidationListsWholeColumn.xlsx");
}
workbook.write(out);
workbook.close();
out.close();
}
}
Это приводит к листу XML следующим образом:
0
"X,Y"
И при использовании HSSFWorkbook
результирующий CreateExcelDataValidationListsWholeColumn.xls
имеет размер 4 КБайт.
Распознавание жеста, поскольку я видел его так или иначе, обычно реализуется с помощью методов машинного обучения, подобных программному обеспечению распознавания изображений. Вот прохладный проект на codeproject о выполнении распознавания жеста мыши в c#. Я уверен, что понятия весьма схожи, так как можно, вероятно, уменьшить проблему вниз до 2D пространства. Если Вы получаете что-то работающее с этим, я хотел бы видеть его. Большая идея проекта!
Видео того, что было сделано с этим видом технологии, если кому-либо интересно?
Один способ посмотреть на него как сжатие / проблема распознавания. В основном Вы хотите взять целый набор данных, вывести большую часть из него и категоризировать остаток. Если бы я делал это (с нуля), то я, вероятно, продолжил бы двигаться следующим образом:
После наблюдения Вашей фотографии (две точки на каждой руке , не четыре точки на одной, doh!) я изменил бы вышеупомянутое следующим образом:
, Если Вы хотите стать милыми, сделайте немного DSL для распознавания шаблонов и вещей записи как:
fire when
in frame.final: rectangle(points)
and
over frames.final(5): points.all (p => p.jerk)
или
fire when
over frames.final(3): hands.all (h => h.click)
Я не являюсь очень хорошо сведущим в этом типе математики, но я считал где-нибудь, что люди иногда используют Цепи Маркова или скрытые марковские модели , чтобы сделать Распознавание Жеста.
, Возможно, кто-то с немного большим количеством знаний в этой стороне Информатики может осветить его далее и предоставить еще некоторую подробную информацию.
Самые простые инструменты распознавания жеста я посмотрел на использование основанный на векторе шаблон для распознавания их. Например, можно определить правильный сильный удар как "0", галочка как "-45, 45, 45", по часовой стрелке круг как "0,-45,-90,-135, 180, 135, 90, 45, 0", и так далее.
Допустить ошибку.. Я работал над распознаванием жеста в течение прошлого года или поэтому теперь, но я не хочу говорить слишком много, потому что я пытаюсь запатентовать свою технологию:), Но... у нас была некоторая удача с адаптивным повышением, хотя, что Вы делаете существенно отличающиеся взгляды. У Вас только есть 4 точки данных для обработки, таким образом, я не думаю, что действительно необходимо "уменьшить" что-либо.
то, Что я исследовал бы, - то, как программы как Flash превращают нарисованный круг от руки в фактический круг. Кажется, что Вы могли отследить точки на время приблизительно секунды, и затем "сглаживать" путь некоторым способом, и затем Вам могло, вероятно, сойти с рук жесткое кодирование Ваши жесты (при создании их достаточно простыми). Иначе, да, Вы собираетесь хотеть использовать алгоритм изучения. Нейронные сети могли бы работать... Я не знаю. Просто выбрасывание идей:), Возможно, смотрят на то, как OCR сделан также... или даже , Hough преобразовывает . Это смотрит на меня как это, проблема распознавания форм больше, чем это имеет распознавание жестов.