cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Syndicate_Admin
Administrator
Administrator

Modificación del archivo layout incrustado en un archivo pbix

Sé cómo desmontar un archivo pbix cambiando la extensión a .zip y luego enfréndolo. Si, a continuación, cambio la extensión de nuevo a .pbix, puedo abrirla en Power BI. Sin embargo, me gustaría modificar el archivo de diseño que se expone al desmontar el pbix. Pero cuando hago eso y cambio la extensión de la .zip a .pbix, recibo un mensaje de archivo dañado cuando intento abrir en Power BI. Esto sucede sin importar cuán pequeño e inocuo sea el cambio.

¿Hay alguna manera de hacer esto sin recibir el mensaje de archivo dañado?

30 REPLIES 30
Syndicate_Admin
Administrator
Administrator

hola a todos,

Estoy intentando modificar el contenido del archivo de diseño mediante el script de PowerShell. Cuando estoy intentando establecer contenido con -Codificación "unicode" . Después de eso, pbix no puede abrirse y mostrar el error corrpupted. También en notpad ++ se muestra "UTF-16 LE BOM codificación. Pero el final de Origial Layout era "utf-16 Little Endian.


Set-Content -Path "C:\PowerShell\newre\newRe\Report\Test" -Value $final -Codificación unicode

¿Puede alguien ayudarme a resolverlo?

Syndicate_Admin
Administrator
Administrator

Creé una idea para abordar esta pregunta, por favor vote:

Cambiar el nombre de las medidas del conjunto de datos no puede romper los informes de cliente (cambiar la referencia de nombre a ID)

https://ideas.powerbi.com/ideas/idea/?ideaid=649ec802-682b-ec11-b76a-281878e608e9

Syndicate_Admin
Administrator
Administrator

Estuve luchando con este problema recientemente, y mi solución es la siguiente:

- Cambiar la extensión de ".pbix" a ".zip"

- No descomprima el archivo ".zip" durante este proceso

- Extraer el archivo "Diseño" de la carpeta "Informe" en el archivo ".zip"

- Abra el archivo "Layout" con Notepad++. (MUY IMPORTANTE)

- Realizar sus modificaciones en el archivo de diseño

- Sustituir el antiguo archivo "Layout" por el nuevo

- Eliminar archivo "SecurityBindings" en el archivo ".zip"

- En el [Contents_type].xml eliminar el texto siguiente:

"<Override PartName="/SecurityBindings" ContentType="" />"

- Cambiar la extensión de ".zip a ".pbix"

- El archivo se abrirá sin pausas

¡Espero que ayude!

¡BIEN! Guardé mi semana \o/

Gracias @Parra

Sí, esto funcionó. Debido a esto se ahorra tanto tiempo. No sé cómo agradecerte.

¡Esto funcionó! ¡Muchas gracias! Me ahorró horas de tener que reconstruir el archivo

Syndicate_Admin
Administrator
Administrator

Descubrí que cuando estaba guardando, WriteAllTextAsync estaba preendiendo 2 bytes adicionales.. usando FlexHex pude ver que el original no tenía eso.

2cdba354-cdd6-438c-8daf-e0aa18da5772.jpg

Para solucionar esto acabo de guardar con WriteAllTextAsync con Encoding.Unicode. Se ha vuelto a abrir como bytes y se ha guardado omitiendo los primeros 2 bytes en cuestión.

var serializedFile = JsonConvert.SerializeObject(_layoutModel);
await System.IO.File.WriteAllTextAsync(Filepath, serializedFile, Encoding.Unicode);

var asBytes = await System.IO.File.ReadAllBytesAsync(Filepath);
await System.IO.File.WriteAllBytesAsync(Filepath, asBytes.Skip(2).ToArray());

Al igual que una FYI, como otros han mencionado también necesitaba editar [Content_Type].xml y quitar la etiqueta Override con el PartName == "/SecurityBindings". Después de que powerbi lo cargó bien (ignorando las comprobaciones de validación que hizo).

Después de un poco de investigación me di cuenta de que es un marcador para el orden de bytes de unicode (había dicho que era esto, pero no lo sabía con seguridad hasta ahora). De todos modos, he actualizado el código presionado aquí ayer. (No se pudo encontrar un enlace de edición para mi publicación anterior)

public async Task Save()
{
    var layoutFile = JsonConvert.SerializeObject(_layoutModel);
    await System.IO.File.WriteAllTextAsync(Filepath, layoutFile, Encoding.Unicode);

    IEnumerable<byte> layoutAsBytes = await System.IO.File.ReadAllBytesAsync(Filepath);
    layoutAsBytes = StripUnicodeByteOrder(layoutAsBytes);
    await System.IO.File.WriteAllBytesAsync(Filepath, layoutAsBytes.ToArray());
}

public static IEnumerable<Byte> StripUnicodeByteOrder(IEnumerable<byte> bytes)
{
    if (bytes.ElementAt(0) == 0xFF && bytes.ElementAt(1) == 0xFE)
        bytes = bytes.Skip(2);

    return bytes;
}

No @instinct46,

¿Podría explicar dónde y cómo se debe ejecutar exactamente este código? En mi caso, no quiero cambiar el archivo de configuración, pero quiero cambiar el datamodelschema para agregar medidas mediante programación.

Gracias de antemano.

Syndicate_Admin
Administrator
Administrator

Cuando elimino "<Override PartName="/SecurityBindings" ContentType="" />" en el archivo raíz [Content_Types].xml, puedo editar el archivo PBIX y abrirlo sin problemas.

eh
Probé su solución, está funcionando muy bien !
muchas gracias !

hola

Cuando intento simplemente quitar el "<Override PartName="/SecurityBindings" ContentType="" />" en el archivo raíz [Content_Types].xml e intento volver a construir el pbix mediante la captura del archivo, todavía no puedo abrir el archivo. Por favor, aconseje.

Intente eliminar el archivo de enlaces de seguridad en lugar de quitar este código.

Además, cuando usted dice que zipping el archivo... Vea mi comentario de arriba. El archivo extraído no debe volver a comprimirse. En su lugar, el archivo layout extraído debe actualizarse y, a continuación, copiarse en la carpeta .zip original (eliminar archivo de enlaces de seguridad desde aquí). A continuación, se debe cambiar el nombre de nuevo a .pbix

Su doen't funciona para mí

Lo siento, no funciona para mí.

eh

Su trabajo!! Gracias.

Syndicate_Admin
Administrator
Administrator

El mismo problema aquí, pero incluso sin recomprimir el archivo, causa corrupción :(,
espero que sea posible tratar con el Diseño directamente un día.

Syndicate_Admin
Administrator
Administrator

Puedo cambiar el archivo de diseño haciendo lo siguiente:

Cambiar .pbix a .zip

Extraer archivo

Modificar y guardar el archivo layout extraído

Copiar el archivo layout modificado en la carpeta zipped original *

Cambiar el nombre .zip a .pbix

*Esto es necesario. Volver a envolver el archivo extraído causará corrupción

Syndicate_Admin
Administrator
Administrator

Yo secunda este número. ¿Alguien ya ha abierto una "idea" para este tema. Cambiar estos parámetros mediante programación sería una gran actualización de BI empresarial! O es todo un fastidio que podamos ver todos estos parámetros pero no podemos cambiarlo.

@v-yuezhe-msft en este caso abrir Power BI Desktop definitivamente no es una respuesta satisfactoria.

Pero, ¿qué cambios podemos hacer hasta ahora, y todos los demás qué cambios ha hecho en la cremallera?

Por ejemplo, es posible cambiar los recursos registrados.

Creé una idea para abordar esta pregunta, por favor vote:

Cambiar el nombre de las medidas del conjunto de datos no puede romper los informes de cliente (cambiar la referencia de nombre a ID)

https://ideas.powerbi.com/ideas/idea/?ideaid=649ec802-682b-ec11-b76a-281878e608e9

Helpful resources

Announcements
Microsoft Build 768x460.png

Microsoft Build is May 24-26. Have you registered yet?

Come together to explore latest innovations in code and application development—and gain insights from experts from around the world.

May 23 2022 epsiode 5 without aka link.jpg

The Power BI Community Show

Welcome to the Power BI Community Show! Jeroen ter Heerdt talks about the importance of Data Modeling.

Power BI Dev Camp Session 22 with aka link 768x460.jpg

Check it out!

Mark your calendars and join us on Thursday, May 26 at 11a PDT for a great session with Ted Pattison!

charticulator_carousel_with_text (1).png

Charticulator Design Challenge

Put your data visualization and design skills to the test! This exciting challenge is happening now through May 31st!

Top Kudoed Authors