10

VSTO C# プロジェクトでは、一連の行インデックスから行の範囲を取得したいと考えています。

行インデックスは、たとえば「7,8,9,12,14」のようになります。

次に、「7:9,12,14」行の範囲が必要です。

私は今これを行います:

Range rng1 = sheet.get_Range("A7:A9,A12,A14", Type.Missing);
rng1  = rng1.EntireRow;

ただし、範囲指定で文字列を扱うため、少し効率が悪いです。

sheet.Rows["7:9"]

動作しますが、これを与えることはできません

sheet.Rows["7:9,12,14"] // Fails
4

5 に答える 5

13

これを試して:

Sheet.Range("7:9,12:12,14:14")

編集:C#でVSTOを使用している場合は、申し訳ありません。

sheet.get_Range("7:9,12:12,14:14", Type.Missing)
于 2012-09-11T09:58:06.520 に答える
6

探しているコードは次のとおりです。

int startRow, endRow, startCol, endCol, row,col;
var singleData = new object[col];
var data = new object[row,col];
//For populating only a single row with 'n' no. of columns.
var startCell = (Range)worksheet.Cells[startRow, startCol];
startCell.Value2 = singleData;
//For 2d data, with 'n' no. of rows and columns.
var endCell = (Range)worksheet.Cells[endRow, endCol];
var writeRange = worksheet.Range[startCell, endCell];
writeRange.Value2 = data;

セルの1次元配列でも2次元配列でも、範囲全体を持つことができます。

この方法は、Excelシート全体をループし、必要な場所とときにデータを入力するときに特に役立ちます。

于 2012-09-12T13:04:39.287 に答える
3

私は C# の専門家ではありませんが、上記のように EntireRow を使用する必要があります。探している文字列は、.Addressプロパティから取得できます。例えば

    private void button1_Click(object sender, EventArgs e)
    {
        Microsoft.Office.Interop.Excel.Application xlexcel;
        Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
        Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
        Microsoft.Office.Interop.Excel.Range xlRange;

        object misValue = System.Reflection.Missing.Value;
        xlexcel = new Excel.Application();

        xlWorkBook = xlexcel.Workbooks.Add();

        // Set Sheet 1 as the sheet you want to work with
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

        xlRange = xlWorkSheet.get_Range("A7:A9,A12,A14", misValue);

        MessageBox.Show(xlRange.EntireRow.Address);

        xlRange = xlWorkSheet.get_Range(xlRange.EntireRow.Address, misValue);

        MessageBox.Show(xlRange.Address);
    }

したがって、上記のように書くことができます

    private void button1_Click(object sender, EventArgs e)
    {
        Microsoft.Office.Interop.Excel.Application xlexcel;
        Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
        Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
        Microsoft.Office.Interop.Excel.Range xlRange;

        object misValue = System.Reflection.Missing.Value;
        xlexcel = new Excel.Application();

        xlWorkBook = xlexcel.Workbooks.Add();

        // Set Sheet 1 as the sheet you want to work with
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

        xlRange = xlWorkSheet.get_Range("$7:$9,$12:$12,$14:$14", misValue);

        MessageBox.Show(xlRange.Address);
    }

パートを見る

    xlRange = xlWorkSheet.get_Range("$7:$9,$12:$12,$14:$14", misValue);
于 2012-09-11T11:44:16.317 に答える