私の質問は、Interop dll をターゲット マシンに登録する以外に、私のプログラムを使用する他の方法はありますか?
プログラムを実行しているコンピューターに Excel がインストールされていない場合に、Excel 相互運用機能を使用するプログラムを使用する方法があるかどうかを尋ねています。短い答えはノーです。相互運用性を使用しないようにプログラムをリファクタリングする意思がある場合、より長い答えは「はい」です。
対象の Excel のバージョンが 2007 以降の場合、Microsoft が提供するOOXml SDKを使用できます。多少の費用がかかる場合は、 Asposeなどのサードパーティ ライブラリを使用することもできます。
OOXml SDK を使用してスプレッドシートを Excel ファイルに挿入する例は、microsoft docsにあります。
// 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);
}
}