我的问题是,除了在目标机器上注册 Interop dll 之外,还有其他方法可以使用我的程序吗?
当运行您的程序的计算机上未安装 Excel 时,您询问是否有任何方法可以使用您的程序,该程序使用 Excel 互操作。最简洁的答案是不。更长的答案是肯定的,如果您愿意重构您的程序以不使用互操作。
如果您的目标 Excel 版本是 2007 及更高版本,则可以使用 Microsoft 提供的OOXml SDK 。如果你愿意花一点钱,你也可以使用Aspose等第三方库。
可以在microsoft docs中找到使用 OOXml SDK 将电子表格插入 excel 文件的示例。
// 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);
}
}