2

私のアプリでは、空白の Excel ファイル フォームのコピーをリソースとして保存しました。このファイルを読み込み、両方のワークシートを変更し、新しい名前で新しい場所に保存する必要があります。ユーザーはそのプロセスを見るべきではありません。

私はSQLサーバーでC#2010を使用しています。そこからデータをロードしてExcelフォームに入れます。

お時間をいただきありがとうございます。

4

3 に答える 3

5

.NET または COM (Microsoft.Office.Interop.Excel) にある Microsoft Interop Assemblies を使用してから、必要なすべてのセルを にロードしList、データを変更します。

このようなもの(以下のコード):

 string path = @"C:\temp\test.xls";
   ApplicationClass excelApllication = null;
   Workbook excelWorkBook = null;
   Worksheet excelWorkSheet = null;

   excelApllication = new ApplicationClass();
   System.Threading.Thread.Sleep(2000);
   excelWorkBook = excelApllication.Workbooks.Add();
   excelWorkSheet = (Worksheet)excelWorkBook.Worksheets.get_Item(1);
   // Attention: 1 indexed cells, [Row, Col]
   excelWorkSheet.Cells[1, 1] = "Column A, Row 1";
   excelWorkSheet.Cells[2, 5] = "Column E, Row 2";
   excelWorkSheet.Cells[3, 3] = "Column C, Row 3";

   excelWorkBook.SaveAs(path, XlFileFormat.xlWorkbookNormal);

   excelWorkBook.Close();
   excelApllication.Quit();

   Marshal.FinalReleaseComObject(excelWorkSheet);
   Marshal.FinalReleaseComObject(excelWorkBook);
   Marshal.FinalReleaseComObject(excelApllication);
   excelApllication = null;
   excelWorkSheet = null;
   //opens the created and saved Excel file
   Process.Start(path);

ユーザーにそのタスクを気付かせたくないので、これはスレッド内で発生する必要があります。

http://msdn.microsoft.com/en-us/library/aa645740%28v=vs.71%29.aspx (スレッドのチュートリアル)

于 2012-10-15T14:31:00.663 に答える
0

可能であれば Excel の自動化を避け、このタスクには OpenXML SDK (または OpenXML SDK をラップするライブラリ) を使用します。

始めるのに役立つ記事を次に示します。

于 2012-10-15T14:24:30.747 に答える
0

あなたはこれをやりたかったと思います...少なくとも私にとってはうまくいきました。:)

    private void btnExcel_Click(object sender, EventArgs e)
    {
        string newDirectoryPath = ValidateDirectory();
        string newFilePath = Path.Combine(newDirectoryPath, "new.xls");

        //brand new temporary file
        string tempPath = System.IO.Path.GetTempFileName();
        //to manage de temp file life
        FileInfo tempFile = new FileInfo(tempPath);
        //copy the structure and data of the template .xls
        System.IO.File.WriteAllBytes(tempPath,Properties.Resources.SomeResource);

        Excel.Application xlApp;  
        Excel.Workbook xlWorkBook;
        Excel.Worksheet xlWorkSheet;
        object misValue = System.Reflection.Missing.Value;

        xlApp = new Excel.Application();
        xlWorkBook = xlApp.Workbooks.Open(tempPath, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

        //WorkTheExcelFile();

        tempFile.Delete();

        xlWorkBook.SaveAs(newFilePath);
        xlWorkBook.Close(true, misValue, misValue);
        xlApp.Quit();

        releaseObject(xlWorkSheet);
        releaseObject(xlWorkBook);
        releaseObject(xlApp);

        Process.Start(newFilePath + ".xlsx");
    }
于 2014-08-05T00:51:57.443 に答える