0

Excelファイルを操作するプログラムを作成しています。読み取りおよび書き込みオプションのために、既存の Excel ファイルを開くか、存在しない場合は新しいファイルを作成する必要があります。そして、OleDb を使用せずにこれを行う必要があります。つまり、ボタンをクリックすると、そのファイルが既にディレクトリにある場合でも、新しい Excel ファイルを作成しようとします。これを修正する方法についてのアイデアはありますか? すべてのユーザー入力は WinForm から行う必要があります。これが私のコードです:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace test2
{
    public partial class Form1 : Form
    {
        Microsoft.Office.Interop.Excel.Application oXL;
        Microsoft.Office.Interop.Excel._Workbook oWB;
        Microsoft.Office.Interop.Excel._Worksheet oSheet;
        Microsoft.Office.Interop.Excel.Range oRng;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        FileInfo fi = new FileInfo(@"C:\Users\User\Desktop\data.xls");
        if (!fi.Exists)
        {
            oXL = new Microsoft.Office.Interop.Excel.Application();
            oXL.Visible = true;
            oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(System.Reflection.Missing.Value));
            oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;

            oSheet.Cells[1, 1] = "First Name";
            oSheet.Cells[1, 2] = "Last Name";
            oSheet.Cells[1, 3] = "Full Name";
            oSheet.Cells[1, 4] = "Age";

            oSheet.get_Range("A1", "D1").Font.Bold = true;
            oSheet.get_Range("A1", "D1").VerticalAlignment =
            Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;      
        }
        else
        {
            Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
            string myPath = (@"C:\Users\User\Desktop\data.xlsx");
            excelApp.Workbooks.Open(myPath);
            excelApp.Visible = true;                
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }
}

}

また、ユーザーとの対話なしで Excel ファイルを保存および閉じるためのコード例を教えていただければ幸いです。ユーザーがデータを入力してからボタンをクリックすると、ポップアップがユーザーに表示されることなく、Excel ドキュメントが自動的に保存されて閉じられます。

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
            string myPath = (@"C:\Users\User\Desktop\data.xlsx");
            excelApp.Workbooks.Open(myPath);
            excelApp.Visible = false;
            int rowIndex = 2; int colIndex = 2;
            excelApp.Cells[rowIndex, colIndex] = textBox1.Text;
            //how do I save workbook?
            //how do I colose Workbook?

前もって感謝します。

4

2 に答える 2

1

まず、2010 などの新しいバージョンの Visual Studio を使用している場合は、Visual Studio Tools for Office ( VSTO ) を使用することを強くお勧めします。そのフレームワーク内で Excel プロジェクトを作成し、開発時間を短縮できます。詳細については、こちらをご覧ください: http://msdn.microsoft.com/en-US/office/hh133430.aspx

WinForm アプリケーションからの Excel ワークブックの保存に関する質問に答えるには、次の操作を実行できます。

excelApp.ScreenUpdating = false;
excelApp.DisplayAlerts = false;

excelApp.ActiveWorkbook.Save();

excelApp.ScreenUpdating = true;
excelApp.DisplayAlerts = true;

お役に立てば幸いですが、他に何かありましたらお知らせください。

于 2012-05-16T12:24:59.273 に答える