csharp 的Microsoft.Office.Interop.Excelを使って的Excelを操作する。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 的Microsoft.Office.Interop.Excelを使って的Excelを操作する。相关的知识,希望对你有一定的参考价值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

namespace InteropExcelSample
{
	class Program
	{
		static void Main(string[] args)
		{
			string fileName = @"C:\sample.xls";

			// Excel系の各オブジェクトは変数で受けて、明示的にリリースしないとExcel.exeのプロセスが残ってしまう。 
			// 例えば、
			// cells = (Excel.Range)sheet.Cells[iRow + 1, iColumn + 1];
			// とかだとCellsのオブジェクトが残ってしまうので注意。 
			Excel.Application xls = null;
			Excel.Workbooks books = null;
			Excel.Workbook book = null;
			Excel.Worksheet sheet = null;
			Excel.Range cells = null;
			Excel.Range cell = null;

			try {
				xls = new Excel.Application();
				books = xls.Workbooks;

				// Excelを開く。 
				book = (Excel.Workbook)(books.Open(fileName
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing
					, Type.Missing));

				if (book.Sheets.Count > 0) {
					sheet = (Excel.Worksheet)book.Sheets[1]; // Interop.Excelのインデックスは基本1から。 

					cell = sheet.UsedRange;
					if (cell != null) {

						// 使用されているセルの行数、列数を取得。 
						int maxRow = cell.Rows.Count;
						int maxColumn = cell.Columns.Count;

						// 行列でループ 
						cells = (Excel.Range)sheet.Cells;
						for (int iRow = 0; iRow < maxRow; iRow++) {
							for (int iColumn = 0; iColumn < maxColumn; iColumn++) {
								cell = (Excel.Range)cells[iRow + 1, iColumn + 1];

								// 列の幅を変える。 
								cell.ColumnWidth = (double)cell.ColumnWidth + 2;

								// セルの内容を変更する。 
								cell.Value2 = (string)cell.Text + "edited.";
							}
						}
					}

					xls.DisplayAlerts = false;
					book.Save();
				}

			} finally {
				if (cell != null) {
					Marshal.ReleaseComObject(cell);
				}
				if (sheet != null) {
					Marshal.ReleaseComObject(sheet);
				}
				if (book != null) {
					book.Close(Type.Missing, Type.Missing, Type.Missing);
					Marshal.ReleaseComObject(book);
				}
				if (books != null) {
					Marshal.ReleaseComObject(books);
				}
				if (xls != null) {
					xls.Quit();
					Marshal.ReleaseComObject(xls);
				}
			}
		}
	}
}

以上是关于csharp 的Microsoft.Office.Interop.Excelを使って的Excelを操作する。的主要内容,如果未能解决你的问题,请参考以下文章

无法将“microsoft.Office.Interop.Excel.ApplicationClass”类型的 COM 对象转换为“microsoft.Office.Interop.Excel.App

缺少 Microsoft.Office.Core 参考

怎样安装microsoft office

使用 Microsoft Office 2016 为 Microsoft Office 2013 开发

Microsoft office 2010激活问题

Microsoft office2019有用的激活码求