/ / Transponer los valores en Excel usando C # - c #, excel, transponer

Transponer valores en excel usando C # - c #, excel, transponer

Vi este enlace - Método C # Transpose () para transponer filas y columnas en una hoja de Excel en stackoverflow y esto es lo que estoy tratando dehacer. Pero el tipo es bastante inútil en las respuestas ya que no proporciona la información completa necesaria. Simplemente quiero transponer las celdas A9: B15 en mi hoja de Excel y luego copiarlas en un nuevo archivo xls, una nueva hoja de trabajo o, mejor aún, eliminar el contenido de la hoja de trabajo actual y reemplazarlo con el contenido de pegado recién transpuesto. Claramente, se puede hacer a través del método WorksheetFunction.Transpose, pero parece que no puedo hacerlo funcionar ya que no sé qué rng o value2 son. Podría crear una fuente de datos, pero de forma segura usando este método parece una forma más apropiada de hacerlo. Aquí está el código de la pregunta de stackoverflow. .

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

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

Aquí está mi código hasta ahora:

        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");

No estoy seguro si he hecho el derecho rng. Estoy tan confundido por esto.

Respuestas

0 para la respuesta № 1

¿Hay alguna razón por la que necesites hacer esto en C #?

Si lo que quieres es justo lo que indicas, el código VBA también puede lograrlo. Sólo

  • leer el rango transpuesto en una matriz variante
  • Borrar la hoja de trabajo
  • escriba la matriz variante de nuevo en la hoja de trabajo en la celda de su elección.
  • Tenga en cuenta que cuando vuelva a escribir la matriz variante en la hoja de trabajo, el rango de destino debe ser del mismo tamaño que la matriz.

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