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 回答