private StringResource createStringResource(ArrayList<String> headers, ArrayList<String> rows) {
		if (rows.size() == 0) {
			return null;
		}

		// Check for blank entries in row and fill out with blanks. This should
		// never happen as all fields should be filled in.
		if (headers.size() > rows.size()) {
			int rowsToAdd = headers.size() - rows.size();
			for (int i = 0; i < rowsToAdd; i++) {
				rows.add("");
			}
		}

		int keyIndex = getColumnIndex(keyColumnName, headers);

		if (keyIndex == -1) {
			keyIndex = 0;
		}

		int descriptionIndex = getColumnIndex(descriptionColumnName, headers);

		if (descriptionIndex == -1) {
			descriptionIndex = 0;
		}

		String key = rows.get(keyIndex);
		String description = rows.get(descriptionIndex);

		final int totalColumnsToIgnore = (columnsToIgnore == null ? 0 : columnsToIgnore.length);
		String[] locales = new String[headers.size() - 2 - totalColumnsToIgnore];

		for (int i = 0; i < locales.length; i++) {
			locales[i] = headers.get(i + 2 + totalColumnsToIgnore);
		}

		StringResource stringResource = new StringResource(key, description, locales);

		for (int i = 0; i < headers.size(); i++) {
			if (!ignoreHeader(headers.get(i))) {
				stringResource.addString(headers.get(i).trim(), rows.get(i).trim());
			}
		}

		return stringResource;
	}