将数据写入excel单元格会擦除我不接触的现有单元格

时间:2013-02-25 18:31:58

标签: c# excel excel-interop

我的应用程序从包含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;
}

在这里Nevyn。虽然我没有写这部分。

编辑:看起来我可以阅读 在为你发布这个之后,我意识到了(非常明显的)问题

 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];

    }

1 个答案:

答案 0 :(得分:0)

我倾向于发现直接像这样分配单元格值不如使用内置功能来设置值那样。

在我的代码中,我使用此行来设置单元格值

using Excel = Microsoft.Office.Interop.Excel;

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

将单元重新转换为范围,然后设置范围Value2设置。我不知道这是否能解决你遇到的问题。