My question is, is there any other way to use my program apart from registering Interop dll on target machine?
Sie fragt, ob es eine Möglichkeit, das Programm zu verwenden, das Excel-Interop verwendet, wenn Excel nicht auf dem Computer läuft das Programm installiert ist. Die kurze Antwort ist nein. Die längere Antwort ist ja, wenn Sie bereit sind, Ihr Programm umzufunktionieren, um keine Interop zu verwenden.
Sie können den von Microsoft bereitgestellten Code OOXml SDK verwenden, wenn die Version von Excel, auf die Sie abzielen, 2007 und höher ist. Sie können auch eine Drittanbieter-Bibliothek wie Aspose verwenden, wenn Sie bereit sind, ein wenig Geld auszugeben.
Ein Beispiel für die Verwendung des OOXml SDK zum Einfügen einer Tabelle in eine Excel-Datei finden Sie unter 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);
}
}
Danke für die Details. Ich verstehe die Gründe, auf OpenXML zuzugehen, aber leider muss ich aus anderen Gründen auf der Interop bleiben. Um das Problem zu beheben, installiere ich Excel (als Voraussetzung) für mein Programm. – Mahender