2017-08-16 2 views
0

詳細をカスタム(定義済み).xlsxテンプレートファイルに書き込むプロジェクトに取り組んでいます。このテンプレートファイルは、その後のユーザー入力のためにExcelアプリを開きます。開かれたファイルはメモリに保存されているので、実際に開く前にローカルファイルに保存する必要はありません。今私は、マルチシート状ワークブックが発生したことを、私は、コードに変更を行おうとしましたC#を使用して2つの事前定義されたワークシートを使用して.xlsxファイルに書き込む方法は?

excelApp = new Excel.Application(); 
Workbooks wbs = excelApp.Workbooks; 
Workbook wb = wbs.Add(pathOfTemplate); //<-- I'm guessing the problem is this line? 
Worksheet ws = wb.Sheets[1]; 

//Fill details 
ws.Cells[1, 1] = "Sample data"; 

//Show app 
excelApp.Visible = true; 

これまでのところ、私はどこかのラインでの基本的なコードを使用して1つのワークシートを持つファイルに良いやっています私は何を得る

Worksheet ws2 = wb.Sheets[2]; 
ws2.Cells[1, 1] = "Sample data again"; 

は何の詳細は、ワークシートのいずれかにwrittedなかった状態で、オープニング2つのExcelのインスタンスである:上記のコードに挿入された別のWorksheet変数を、持っています。私はWorksheet.Activate()メソッドを試しましたが、役に立たないです。私は間違って何をしていますか?

+0

は空白のxlsxファイルを開くにはしましたか? –

+0

@redsどういう意味ですか?開いている 'xlsx'が空白であると言っているのなら、いいえ。 C#プログラムで記述された詳細のいずれもなく、あらかじめ定義されたファイルを開きました。 – AwonDanag

+0

私は、あなたが空の既存のxlsxファイルを開始していることを意味しています。あなたのプロジェクトのデータを入力してください。 –

答えて

0

まず、 interopを使用してください。 xlsx形式は、シートを作成する必要があるたびにExcelの新しいインスタンスを開始せずに、アプリケーション、特にサービスやWebサイトでExcelファイルを生成して読み取ることができるように作成されました。

あなたは、テンプレートとしてシートを読んで、それを修正し、新しい名前を使用して、それを保存するためにEPPlusのようなライブラリを使用することができます。

var newFile = new FileInfo("pathToNewFile.xlsx"); 
var templateFile = new FileInfo("PathToTemplate.xlsx"); 

using(var pck = new ExcelPackage(newFile,templateFile)) 
{ 
    var ws=pck.Workbook.Worksheets[0]; 

    //Set a cell's text 
    ws.Cells["A1"].Value ="whatever"; 
    ws.Cells[2,1].Value ="whatever2"; 

    //Fill cells from a collection 
    var orders=new List<Order>(); 
    //Fill the list then ... 
    ws.Cells["A10"].LoadFromCollection(orders); 

    pck.Save(); 
} 
関連する問題