private void ImportWorkbook(LocalizationSettingsBuilder builder, IWorkbook workbook) { for (int sheetNum = 0; sheetNum < workbook.NumberOfSheets; sheetNum++) { ImportSheet(builder, workbook.GetSheetAt(sheetNum)); } }
public override void Import() { try { var builder = new LocalizationSettingsBuilder(EditorLocalizationSettings.settings); foreach (var path in excelFilesPathes) { if (!File.Exists(path)) { throw new UnityException(string.Format("File '{0}' not exists", path)); } using (var stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { var book = (Path.GetExtension(path) == ".xls") ? (IWorkbook) new HSSFWorkbook(stream) : (IWorkbook) new XSSFWorkbook(stream); ImportWorkbook(builder, book); } } builder.Apply(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } finally { EditorUtility.ClearProgressBar(); } }
private void ImportSheet(LocalizationSettingsBuilder builder, ISheet sheet) { var header = sheet.GetRow(0); var locales = header.Skip(1).TakeWhile(c => c != null) .Select(cell => cell.StringCellValue) .ToArray(); var progressBarHeader = string.Format("Import {0}", sheet.SheetName); for (int rowNum = 1; rowNum <= sheet.LastRowNum; rowNum++) { IRow row = sheet.GetRow(rowNum); if (row == null) { continue; } var key = row.GetCell(0); if (key == null || string.IsNullOrEmpty(key.StringCellValue)) { continue; } var keyString = key.StringCellValue; EditorUtility.DisplayProgressBar(progressBarHeader, keyString, (float)rowNum / sheet.LastRowNum); for (int cellNum = 1; cellNum < row.LastCellNum; cellNum++) { var cell = row.GetCell(cellNum); if (cell != null) { var locale = locales[cellNum - 1]; builder.AddWord(locale, keyString, cell.StringCellValue); } } } }