#c# #wpf #documentviewer #xamlparseexception
#c# #wpf #documentviewer #исключение xamlparseexception
Вопрос:
Я должен импортировать .xlsx
файл в свое приложение WPF и просмотреть его. Я конвертирую документ в . xps
а затем загрузка. После этого я вызываю GetFixedDocumentSequence()
и получаю это исключение
Исключение XamlParseException:
{«Свойство UnicodeString не содержит достаточного количества символов, чтобы соответствовать содержимому свойства Indexes .»}.
вот мой код:
private void LoadData()
{
string xpsPath = ViewDocumentViewer("D:\test.xlsx");
DisplayXPSFile(xpsPath);
}
private string ViewDocumentViewer(string path)
{
try
{
string xpsPath;
var excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.DisplayAlerts = false;
excelApp.Visible = false;
Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(path);
xpsPath = ExportXPS(excelWorkbook, path);
excelWorkbook.Close(false, null, null);
excelApp.Quit();
Marshal.ReleaseComObject(excelApp);
excelApp = null;
return xpsPath;
}
catch
{
}
return string.Empty;
}
string ExportXPS(Microsoft.Office.Interop.Excel.Workbook excelWorkbook, string path)
{
string xpsFileName;
xpsFileName = (new DirectoryInfo(path)).FullName;
xpsFileName = xpsFileName.Replace(new FileInfo(path).Extension, "") ".xps";
excelWorkbook.ExportAsFixedFormat(XlFixedFormatType.xlTypeXPS,
Filename: xpsFileName,
OpenAfterPublish: false);
return xpsFileName;
}
void DisplayXPSFile(string xpsFileName)
{
XpsDocument xpsPackage = new XpsDocument(xpsFileName, FileAccess.Read, CompressionOption.NotCompressed);
FixedDocumentSequence fixedDocumentSequence = xpsPackage.GetFixedDocumentSequence();
DocView.Document = fixedDocumentSequence;
}
Ответ №1:
Похоже, что-то не так с преобразованием Excel в XPS. Обычно это связано с проблемой символов или шрифтов. Вы можете открыть свой файл XPS (я использую это расширение в Visual Studio: http://visualstudiogallery.msdn.microsoft.com/450a00e3-5a7d-4776-be2c-8aa8cec2a75b?SRC=VSIDE ), чтобы увидеть, откуда исходит проблема. Перейдите на страницу, создающую ошибку, и найдите глифы, содержащие проблему.
<Canvas Clip="F 1 M137.710006714,208.58001709 L476.861022949,208.58001709 L476.861022949,208.58001709 L476.861022949,219.83001709 L476.861022949,219.83001709 L137.710006714,219.83001709 Z">
<Glyphs OriginX="0" OriginY="0" UnicodeString="D" Indices=",55.6" Fill="#FF000000" FontRenderingEmSize="1" FontUri="/Resources/076a5115-0000-0000-0000-000000000000.odttf" RenderTransform="8.949999809,0,0,8.949999809,185.458496094,218.330078125" />
</Canvas>
Вы также можете найти дополнительную документацию, касающуюся этого ar MSDN: http://msdn.microsoft.com/en-us/library/ms748985.aspx
Поскольку для генерации XPS используется взаимодействие с Excel, у вас практически не будет контроля над процедурой преобразования, поэтому я бы посоветовал просмотреть шрифты, используемые в документе Excel. Возможно, есть какая-то проблема с используемыми шрифтами.
С уважением