表題の内容についてなのですが、
下記のコードで回しているのですが値をとることすらできません。
Book1からデータを取得し、別のセルにコピーしてからBook2として保存しています。
特にエラーなどは出ず、数値の取得と出力ができていない状況です。
できればFor文を使わずにやりたいのですが(処理時間が短くなるみたいなので)、
お知恵をお貸しください。
よろしくお願いします。
環境:
Visual Studio 2017
Excel office 2019
パッケージ:Microsoft.Office.Interop.Excel v15.0.4795.1000
C#
1using System; 2using System.Runtime.InteropServices; 3using Excel = Microsoft.Office.Interop.Excel; 4using Microsoft.Office.Interop.Excel; 5 6namespace ConsoleApp2 7{ 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 string path = @"C:\Users\user01\Desktop\Book1.xlsx"; 13 string pathS = @"C:\Users\user01\Desktop\Book2.xlsx"; 14 15 object[,] objs = new object[3, 4]; 16 17 Excel.Application objExcel = null; 18 Excel.Workbook objWorkBook = null; 19 Excel.Sheets xlSheets = null; 20 Excel.Worksheet ws = null; 21 22 // ** EXCEL 開始処理 ************************************************************ 23 try 24 { 25 objExcel = new Excel.Application(); 26 objExcel.DisplayAlerts = false; 27 } 28 catch 29 { 30 throw new Exception("Microsoft Office Excelがインストールされていません。"); 31 } 32 33 if (System.IO.File.Exists(path) == false) 34 { 35 throw new Exception("エクセルファイルが見つかりませんでした。\n" + path); 36 } 37 38 try 39 { 40 objWorkBook = (Excel.Workbook)(objExcel.Workbooks.Open(path)); 41 xlSheets = objWorkBook.Sheets; 42 ws = xlSheets[1] as Worksheet; 43 44 Excel.Range rng = ws.Range["A1:C4"]; 45 46 objs = (object[,])rng.Value; 47 48 Marshal.FinalReleaseComObject(rng); 49 rng = null; 50 51 rng = ws.Range["A7:C10"]; 52 53 rng.Value2 = objs; 54 55 Marshal.FinalReleaseComObject(rng); 56 rng = null; 57 58 objWorkBook.SaveAs(pathS); 59 } 60 catch(Exception ex) 61 { 62 Console.WriteLine(ex.Message); 63 } 64 65 objWorkBook.Close(); 66 objExcel.Quit(); 67 68 Marshal.FinalReleaseComObject(ws); 69 ws = null; 70 Marshal.FinalReleaseComObject(xlSheets); 71 xlSheets = null; 72 Marshal.FinalReleaseComObject(objWorkBook); 73 objWorkBook = null; 74 Marshal.FinalReleaseComObject(objExcel); 75 objExcel = null; 76 77 GC.Collect(); 78 GC.WaitForPendingFinalizers(); 79 GC.Collect(); 80 } 81 } 82} 83 84
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。