我的應用程序從9列的excel文件中讀取數據,執行一些工作,並且如果滿足某些條件,則將數據寫入當前行的第9列。這部分工作正常。問題是我沒寫的所有東西都被擦除,甚至文件中的其他工作表也被擦除。將數據寫入Excel單元格擦除現有單元格我不觸摸
這是我的代碼寫入文件的唯一部分。
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];
}
你的FileOpen代碼是什麼樣的?我正在尋找應用程序初始化和app.Workbooks.Open(...)命令 – Nevyn 2013-02-25 19:01:41
好吧,代碼看起來像它使用了一個已經打開的EXCEL實例,並添加了一個完全空白的新工作簿,然後將其保存到傳入該方法的路徑。如果您從中讀取數據的工作簿已經打開,則不需要重新調用「打開」,但如果它關閉了,那麼您剛纔向我顯示的這種方法將無法工作,它會始終通過覆蓋它來擦除原始數據。 – Nevyn 2013-02-25 19:25:11
我查看了我的帖子後很快就看到了問題,抱歉哈哈。 – 0xFF 2013-02-25 19:26:17