Ответ 1
Мой вопрос в том, есть ли другой способ использовать мою программу отдельно от регистрировать Interop dll на целевой машине?
Вы спрашиваете, есть ли способ использовать вашу программу, которая использует взаимодействие Excel, когда Excel не установлен на компьютере, на котором запущена ваша программа. Короткий ответ: нет. Более длинный ответ - да, если вы готовы реорганизовать свою программу, чтобы не использовать interop.
Вы можете использовать OOXml SDK, предоставленный Microsoft, если версия Excel, на которую настроена таргетинг, - 2007 и выше. Вы также можете использовать стороннюю библиотеку, такую как Aspose, если вы готовы потратить немного денег.
Пример использования OOXml SDK для вставки электронной таблицы в файл excel можно найти в msdn.
// Given a document name, inserts a new worksheet.
public static void InsertWorksheet(string docName)
{
// Open the document for editing.
using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true))
{
// Add a blank WorksheetPart.
WorksheetPart newWorksheetPart = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>();
newWorksheetPart.Worksheet = new Worksheet(new SheetData());
Sheets sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>();
string relationshipId = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart);
// Get a unique ID for the new worksheet.
uint sheetId = 1;
if (sheets.Elements<Sheet>().Count() > 0)
{
sheetId = sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1;
}
// Give the new worksheet a name.
string sheetName = "Sheet" + sheetId;
// Append the new worksheet and associate it with the workbook.
Sheet sheet = new Sheet() { Id = relationshipId, SheetId = sheetId, Name = sheetName };
sheets.Append(sheet);
}
}