0

私のアプリケーションは、9列のExcelファイルからデータを読み取り、いくつかの作業を行い、いくつかの条件が満たされた場合は、現在の行の9列目にデータを書き込みます。この部分は正常に機能します。問題は、ファイル内の他のワークシートでさえ、私が書かなかったものがすべて消去されることです。

これが私のコードのファイルに書き込む唯一の部分です。

using Microsoft.Office.Interop.Excel;[...]


 Dictionary<int, string> newlines = new Dictionary<int, string>();
 //excel reader reads the file, iterates the rows,
 //check up the conditions, add pairs to newlines when needed  

 m_excelWriter = new ExcelWriter();    
 m_excelWriter.Open(FilePath);

 foreach (var item in newlines)
 {
    m_excelWriter.WriteLine(item.Value, item.Key);
 }
 m_excelWriter.Close();


public void WriteLine(string Value, int RowNumber)
{
   m_Worksheet.Cells[RowNumber, 8] = Value;
   //both ways have the problem
   //((Range)m_Worksheet.Cells[RowNumber, 8]).Value2 = Value;
}

ここネヴィン。しかし、私はこの部分を書きませんでした。

編集: あなたのためにこれを投稿した後、私は読むことができないように見えます、私は(非常に明白な)問題に気づきました

 public void Open(string FilePath)
    {
        // Open Excel :
        Process[] ExcelProcessesBefore = Process.GetProcessesByName("EXCEL");
        this.m_Application = new Microsoft.Office.Interop.Excel.Application();
        Process[] ExcelProcessesAfter = Process.GetProcessesByName("EXCEL");
        this.m_ProcessId = this.GetProcessId(ExcelProcessesBefore, ExcelProcessesAfter);
        this.m_Application.DisplayAlerts = false;

        // Open the worksheet :
        this.m_Workbook = this.m_Application.Workbooks.Add(Type.Missing);
        this.m_Workbook.SaveAs(FilePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                               Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing,
                               Type.Missing, Type.Missing, Type.Missing);

         m_Worksheet = (_Worksheet)m_Workbook.Worksheets[0];

    }
4

1 に答える 1

0

セルの値をそのように直接割り当てることは、組み込みの機能を使用して値を設定することと同様に機能しないことに気付く傾向があります。

私のコードでは、この行を使用してセル値を設定します

using Excel = Microsoft.Office.Interop.Excel;

((Excel.Range)xlWorksheet.Cells[row, ccol]).Value2 = cellVal;

セルを範囲に再キャストしてから、範囲Value2設定を設定します。これで問題が解決するかどうかはわかりませんが。

于 2013-02-25T18:55:54.107 に答える