Alguien sabe cómo conseguir un valor de celda de Excel con el SDK de XML abierto 2.0, conociendo la posición de la fila y la columna, por ejemplo, (A2), a través de Linq?sobresalir valor de la celda con la posición de fila y columna a través de Open XML SDK consulta LINQ
6
A
Respuesta
6
Así destacan los valores de celda almacena de forma directa o si se trata de una cadena, en una estructura de datos común conocida como una tabla SharedString.
En el ejemplo siguiente el primero en utilizar LINQ para obtener la célula en una dirección particular y luego pasa que a otra función para obtener el valor de la celda.
También tenga en cuenta que habría que añadir los cheques nulos en todas las etapas de determinar si existe la fila/columna
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
namespace TestOpenXmlSDK
{
class Program
{
static void Main(string[] args)
{
string pathSource = @"D:\sample.xlsx";
using (FileStream fsSource = new FileStream(pathSource, FileMode.Open, FileAccess.Read))
{
byte[] bytes = new byte[fsSource.Length];
fsSource.Read(bytes, 0, (int)fsSource.Length);
using (MemoryStream mem = new MemoryStream())
{
mem.Write(bytes, 0, (int)bytes.Length);
using (SpreadsheetDocument excelDocument = SpreadsheetDocument.Open(mem, true))
{
var wbPart = excelDocument.WorkbookPart;
var wsPart = wbPart.WorksheetParts.First();
var sheetData = wsPart.Worksheet.GetFirstChild<SheetData>();
var cellValue = GetCellValue(GetCell(sheetData, "B2"), wbPart);
}
}
}
}
public static Cell GetCell(SheetData sheetData, string cellAddress)
{
uint rowIndex = uint.Parse(Regex.Match(cellAddress, @"[0-9]+").Value);
return sheetData.Descendants<Row>().FirstOrDefault(p => p.RowIndex == rowIndex).Descendants<Cell>().FirstOrDefault(p => p.CellReference == cellAddress);
}
public static string GetCellValue(Cell cell, WorkbookPart wbPart)
{
string value = cell.InnerText;
if (cell.DataType != null)
{
switch (cell.DataType.Value)
{
case CellValues.SharedString:
var stringTable = wbPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault();
if (stringTable != null)
{
value = stringTable.SharedStringTable.ElementAt(int.Parse(value)).InnerText;
}
break;
case CellValues.Boolean:
switch (value)
{
case "0":
value = "FALSE";
break;
default:
value = "TRUE";
break;
}
break;
}
}
return value;
}
}
}
Cuestiones relacionadas
- 1. XAML - Índice de fila y columna de unión de la celda a la ID de automatización
- 2. hoja de cálculo de Google obtener valor de celda con índice de fila y columna
- 3. ¿Cómo consultar datos XML en la columna de la base de datos usando Linq a SQL y Linq a XML?
- 4. PDI de Java: cómo encontrar una celda de Excel con un valor de cadena y obtener su posición (fila) para usar esa posición para buscar otra celda
- 5. Open XML SDK 2.0: ¿cómo actualizar una celda en una hoja de cálculo?
- 6. Consulta anidada de Linq a XML
- 7. ¿Qué indica que una celda Office Open XML contiene un valor de fecha/hora?
- 8. fila con valor mínimo de una columna
- 9. Agregue el valor que falta en la columna con el valor de la fila de arriba
- 10. Serializar la fila de Oracle a XML
- 11. SQL: actualiza una fila y devuelve un valor de columna con 1 consulta
- 12. Eliminar duplicados según el valor de la columna-linq
- 13. ¿Códigos de ejemplo para principiantes para Open XML SDK?
- 14. jQuery - ¿Seleccionar la primera celda de una fila determinada?
- 15. CFML - fila de consulta a la estructura
- 16. encapsulando la lógica en una consulta de linq a sql a través del método de extensión
- 17. Open XML Paragraph Spacing
- 18. Cómo obtener el valor de celda con el formato aplicado (valor de celda formateado) con OpenXML SDK
- 19. LINQ a entidades a través de la propiedad de interfaz
- 20. LINQ a SQL - ¿Cómo encontrar el valor de la columna IDENTITY después InsertOnSubmit()
- 21. Slickgrid agregar color a una celda/columna o fila
- 22. Formatee programáticamente una fecha en una hoja de Excel usando Office Open Xml SDK
- 23. Oracle gran total de la columna y la fila
- 24. Problema con la consulta de linq
- 25. DataGridView muestra la celda del encabezado de fila
- 26. Obtener texto de la etiqueta de texto de la celda seleccionada con el SDK de iPhone
- 27. jQuery selector a la última fila primera columna
- 28. Seleccione una fila con valor distinto de una columna
- 29. Excel elimina la fila si la columna contiene el valor de a-remove-lista
- 30. ¿Manera corta de conseguir objetos dinámicos de la consulta de selección de LINQ a XML?