0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C# Excelの.xls形式を.xlsx形式に変換

Posted at

Excelには.xls(旧フォーマット)と.xlsx(新フォーマット)が存在し、業務上で処理する際に両方のファイルを取り扱う場合があります。

各プログラム言語のExcelを操作するライブラリでは、.xlsxのみ対応しているケースが多い為、ファイル形式を変換して扱うようにしてみようと思います:sunny:

COM参照の追加

COMオブジェクトを扱うため、以下の参照を追加しました。
※PCにExcelがインストールされている必要があります

  • Microsoft Excel 16.0 Object Libraly
  • Microsoft Office 16.0 Object Libraly

image.png

変換処理

とりあえず、やりたいことだけ実行するように処理を記述。

using Excel = Microsoft.Office.Interop.Excel;

class Program
{
	static void Main(string[] args)
	{
		// コマンドライン引数からファイルパスを取得
		// ExcelConverter.exe "C:\path\to\your\inputFile.xls" "C:\path\to\your\outputFile.xlsx"
		if (args.Length < 2)
		{
			Console.WriteLine("Usage: ExcelConverter <input file> <output file>");
			return;
		}
		string inputFile = args[0];
		string outputFile = args[1];
		
		var excelApp = new Excel.Application();
		Excel.Workbook workbook = null;

		try
		{
			// .xlsファイルを開く
			workbook = excelApp.Workbooks.Open(inputFile);

			// .xlsx形式で保存
			workbook.SaveAs(outputFile, Excel.XlFileFormat.xlOpenXMLWorkbook);
		}
		catch (Exception ex)
		{
			Console.WriteLine(ex.Message);
		}
		finally
		{			
			if (workbook != null)
			{
				workbook.Close(false);
				excelApp.Quit();
			}

			// COMオブジェクトの解放
			System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
			System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
		}
	}
}

ビルドして実行

コマンドプロンプトから実行して、ファイルが変換できることを確認。

ExcelConverter.exe "C:\path\to\your\inputFile.xls" "C:\path\to\your\outputFile.xlsx"

とりあえず、変換処理はできたので次はこれを別のプログラムから呼び出してみたいと思います。

Reference

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?