Начните с составления списка со всеми возможными заменами символов. Для краткости я сократил ваш пример, и вы, конечно, захотите встроить его в код, а не указывать список как литерал:
mylist = ["Mm", "yY", "Gg", "I1i" , "rR", "Ll", "Fr", "Ii1", "Ee3", "nN", "dD"]
После того, как у вас есть все параметры, используйте itertools
чтобы получить произведение всех этих опций:
import itertools
for f in itertools.product(*mylist):
print (''.join(f))
Это дает:
MyGIrLFRIEnd
MyGIrLFRIEnD
... 13,820 more ..
mYgiRlfr13Nd
mYgiRlfr13ND
SpreadsheetGear может сделать это:
SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbookSet().Workbooks.OpenFromStream(stream);
можно попробовать его за себя с бесплатная оценка .
Правовая оговорка: Я владею SpreadsheetGear LLC
Кажется, что я нашел решение проблемы сам.
http://www.codeplex.com/ExcelDataReader
Эта библиотека, кажется, работает приятно, и она берет поток для чтения файла Excel.
ExcelDataReader reader = new ExcelDataReader(ExcelFileUpload.PostedFile.InputStream);
Infragistics имеет компонент Excel , который может считать файл Excel из потока.
я использую его в проекте здесь, и это работает хорошо.
Также открытый исходный код myXls компонент мог легко быть изменен для поддержки этого. XlsDocument contstructor только поддерживает загрузку из файла, данного именем файла, но это работает путем создания FileStream и затем чтения Потока, таким образом изменение его для поддержки загрузки из потоков должно быть тривиальным.
Редактирование: Я вижу, что Вы нашли решение, но я просто хотел отметить, что я обновил исходный код для компонента так, чтобы это теперь могло считать файл Excel непосредственно из потока. :-)