0

私は自分の記録用に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」を追加するとします。

4

1 に答える 1

0

これは VBA コードですが、ソリューションの要点を理解する必要があります。空白のセルが見つかるまでセルをループし、そこにデータを挿入します。解決策の鍵は、a) Range オブジェクトをシートの開始セル (この例の場合は「A1」) に等しく設定することと、b) Range.Offset(1,0 を使用して各行をオフセットしてセルをループすることです。 ) 1 行を「移動」します。

' 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"
于 2012-10-31T06:28:06.837 に答える