0

Microsoft.Office.Interop.Excel dll を使用して、データを Excel シートに書き込みたいと考えています。私はコードをもっている:

if (System.IO.File.Exists(strFileName))
{
    System.IO.File.SetAttributes(strFileName, FileAttributes.Normal);
    System.IO.File.Delete(strFileName);
}

// Open an instance of excel. Create a new workbook.
// A workbook by default has three sheets, so if you just want 
//a single one, delete sheet 2 and 3

Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
Excel._Workbook xlWB = (Excel._Workbook)xlApp.Workbooks.Add(Missing.Value);

Excel._Worksheet xlSheet = (Excel._Worksheet)xlWB.Sheets[1];
((Excel._Worksheet)xlWB.Sheets[2]).Delete();
((Excel._Worksheet)xlWB.Sheets[2]).Delete();

xlSheet.Name = strSheetName;

// Write a value into A1
xlSheet.Cells[2, 1] = "Tags";
xlSheet.Cells[2, 2] = "Leak Test";
xlSheet.Cells[2, 3] = "FIR";
xlSheet.Cells[2, 4] = "SOP";

xlWB.SaveAs(strFileName, Missing.Value, Missing.Value, Missing.Value, 
Missing.Value,Missing.Value, 
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, 
Missing.Value, Missing.Value, Missing.Value, Missing.Value);
xlApp.Quit();

// Release the COM object, set the Excel variables to Null, and tell the 
//Garbage Collector to do its thing
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWB);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

xlSheet = null;
xlWB = null;
xlApp = null;

今、パスから既存のExcelファイルを開き、提供された名前のExcelシートにいくつかのデータを入れて、プログラムから特定のパスに保存します。

既存のExcelファイルを開くことができ、追加して別の名前で保存できるソースがあれば返信してください。

よろしく、ギリッシュ

4

3 に答える 3

3

ExcelPackage はメンテナンスされなくなりました。いくつかのバグがあるようです。そこでコメントを読んで、http://epplus.codeplex.com/を見つけました

ExcelPackage に基づいて構築され、そのライセンス (GPL) を継承しているため、要件に合わない場合があります。

于 2011-05-25T12:27:55.790 に答える
1

2007 バージョンの Excel を使用している場合は、代わりにExcelPackageを使用することをお勧めします。これは OpenXML 標準の実装であり、COM 相互運用機能よりもはるかに高速で煩雑ではありません。 Web サーバーのように、Excel (Office) がインストールされていても構いません。

強くお勧めします - ただし、Excel 2007 以降に限定されます。

于 2009-10-30T05:34:09.010 に答える
0

詳しくはこちらをご覧ください

于 2009-10-30T05:31:15.030 に答える