/ / Transponuj wartości w programie Excel za pomocą C # - c #, Excel, transponuj

Transponuj wartości w programie Excel za pomocą C # - c #, excel, transpose

Widziałem ten link - Metoda C # Transpose () do transponowania wierszy i kolumn w arkuszu programu Excel w stackoverflow i to właśnie próbujęzrobić. Ale facet jest dość nieprzydatny w odpowiedziach, ponieważ nie zapewnia pełnych potrzebnych informacji. Chcę po prostu przetransponować komórki A9: B15 do mojego arkusza programu Excel, a następnie skopiować je do nowego pliku xls, nowego arkusza roboczego lub jeszcze lepiej usunąć bieżącą zawartość arkusza roboczego i zastąpić go nowo przeniesioną zawartością wklejania. Oczywiście można to zrobić za pomocą metody WorksheetFunction.Transpose, ale nie wydaje mi się, aby działał, ponieważ nie wiem, co to jest rng lub wartość2? Mógłbym stworzyć bazę danych, ale niestety użycie tej metody wydaje się bardziej odpowiednie. Oto kod z pytania dotyczącego przepływu stosu. .

Object[,] transposedRange = (Object[,])xlApp.WorksheetFunction.Transpose(rng.Value2);

xlApp.ActiveSheet.Range("A1").Resize(transposedRange.GetUpperBound(0), transposedRange.GetUpperBound(1)) = transposedRange;

Oto mój kod do tej pory:

        Application excel = new Application();
Workbook wb = excel.Workbooks.Open(@"P:Visual Studio 2013ProjectsDebuggingDebuggingtest.htm");
Microsoft.Office.Interop.Excel.Range rng = excel.get_Range("A9:B15");
Object[,] transposeRange = (Object[,])excel.WorksheetFunction.Transpose(rng);
transposeRange = excel.ActiveSheet.Range("A1").Resize(transposeRange.GetUpperBound(0), transposeRange.GetUpperBound(1));
wb.SaveAs(@"P:Visual Studio 2013ProjectsDebuggingDebuggingtesting.xls");

Nie jestem pewien, czy poprawnie wykonałem rng. Jestem tym bardzo zdezorientowany.

Odpowiedzi:

0 dla odpowiedzi № 1

Czy jest jakiś powód, aby to zrobić w języku C #?

Jeśli chcesz tylko tego, co chcesz, kod VBA może to osiągnąć. Właśnie

  • wczytać transponowany zakres do tablicy wariantów
  • wyczyść arkusz
  • zapisz tablicę wariantów z powrotem do arkusza roboczego w wybranej komórce.
  • Zauważ, że kiedy zapisujesz tablicę wariantów z powrotem do arkusza, zakres docelowy musi mieć taki sam rozmiar jak tablica.

Option Explicit
Sub TransposeRange()
Dim RGtoTranspose As Range
Dim V As Variant
Set RGtoTranspose = Range("A9:B15")
V = WorksheetFunction.Transpose(RGtoTranspose)

Cells.Clear
Range("a1").Resize(UBound(V, 1), UBound(V, 2)).Value = V

End Sub