我有一个像下面这样的代码为我的记录生成一个Excel文件,我想这样做每次运行我的程序时它会检查最后一行使用,如果最后一行不为null则会插入新数据在新的一行。但是,我的代码没有得到理想的结果。有人可以帮我这个吗?感谢
Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application();
string file = "TestingAccounts.xls";
Workbook wb = new Workbook();
Worksheet ws = new Worksheet();
object misValue = System.Reflection.Missing.Value;
try
{
wb = xla.Workbooks.Open(file, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
ws = (Worksheet)wb.Worksheets.get_Item(1);
xla.Workbooks.Open(file);
Range last = ws.Cells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing);
Range range = ws.get_Range("A1", last);
int lastUsedRow = last.Row + 1;
ws.Cells[lastUsedRow, 1] = "abc";
xla.DisplayAlerts = false;
wb.SaveAs(file, XlFileFormat.xlAddIn, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wb.Close(true, misValue, misValue);
xla.Quit();
releaseObject(ws);
releaseObject(wb);
releaseObject(xla);
}
catch
{
MessageBox.Show("The excel file is not exist. Click ok to create new one");
wb = xla.Workbooks.Add(XlSheetType.xlWorksheet);
ws = (Worksheet)xla.ActiveSheet;
xla.DisplayAlerts = false;
wb.SaveAs(file, XlFileFormat.xlAddIn, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wb.Close(true, misValue, misValue);
xla.Quit();
releaseObject(ws);
releaseObject(wb);
releaseObject(xla);
}
假设上面的代码想要在下一行中添加“abc”,如果找到最后一个使用的行不为空。
答案 0 :(得分:0)
这是VBA代码,但您应该了解解决方案的要点。循环遍历单元格,直到找到空白单元格并在那里插入数据。解决方案的关键是a)设置一个Range对象等于工作表中的某个起始单元格(在本例中为“A1”)和b)通过使用Range.Offset(1,0抵消每一行)来循环遍历单元格)“移动”一行。
' select start range
Set rangePaste = Range("A1")
' loop until you find a blank cell in column A
Do Until rangePaste.Value = ""
Set rangePaste = rangePaste.Offset(1, 0) ' move down row
Loop
'set cell value
rangePaste.Value = "abc"