0

いくつかのテストの後、いくつかの問題があるようです。

このコードは現在、ファイルをコピーしています。File.Copy操作の後、特定のセルを更新する必要があるコードが続きます。更新しようとすると、システムはエラーで失敗し、たとえば特定のセル A28 が見つからないことを通知します。

コードを元のコードに戻すと、セル A28 が検出され、問題なく値が更新されます。

何か案は?

現状のコード (元のテンプレートを上書き):

// Declaration of variables 
ClientName = txtClientName.Text;

string newFileName = ClientName + ".xls";

string Filename = "C:\\Template.xls";

//File.Copy(Filename, @"C:\\" + newFileName, true);


// If you are using xls format (2003), use this connection string.

string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Filename + ";Extended Properties=\"Excel 8.0;HDR=NO;\"";

string SQL1 = "UPDATE [Cover Sheet$A28:A28] SET F1='" + ClientName + "'";

using (OleDbConnection Connection = new OleDbConnection(ConnectionString))
        {
            Connection.Open();
            using (OleDbCommand cmd1 = new OleDbCommand(SQL1, Connection))
            {
                cmd1.ExecuteNonQuery();
            }
        }
    }
4

1 に答える 1

0

必要な新しいファイル名をプロシージャに渡し、テンプレートをコピーして、新しいファイルで作業します。

public void MapToExcelDocument(string newFileName) 
{ 
    // Declaration of variables  
    string templateName = "C:\\Template.xls"; 
    File.Copy(templateName, newFileName, true);

    // If you are using xls format (2003), use this connection string.             
    string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
                               newFileName + ";Extended Properties=\"Excel 8.0;HDR=NO;\""; 

 ....

この変更 (File.Copy の呼び出し) では、ソース コード ファイルの先頭に次の行を追加する必要があります。

using System.IO;

この単純な行は、System.IO 名前空間に存在するオブジェクト、クラス、列挙型、およびインターフェイスを使用していることをコンパイラに通知します。行がなければ、 File のようなすべてのクラスに完全修飾名前空間をプレフィックスとして付ける必要があります

System.IO.FileCopy(templateName, newFileName, true);

ご覧のとおり、タイピングはあまり便利ではありません。

編集: 以下のコメントに続いて、別のヒントを追加します。
パスなしで単純なファイル名を渡すと、File.Copy は現在の作業ディレクトリに新しいファイルを作成します。Visual Studio 内で作業している場合、現在の作業ディレクトリはbin/debugまたはbim/releaseです。アプリケーションをデプロイすると、現在の作業ディレクトリがアプリケーションの開始ディレクトリになります。

いくつかのオプションがあります:

  • 完全修飾ファイル名を任意のディレクトリに渡します (IE "C:\MyFiles\destinationFile.xls")。
  • 構成ファイル内でパスを定義し、このパスを渡されたファイル名に追加します。
  • 構成ファイルで相対パスを定義し、よく知られているパス (MyDocuments など) に関連するディレクトリに書き込みます。
于 2012-08-13T09:33:22.730 に答える