Проверьте файл Excel в c #, используя Documentformat.OpenXML - PullRequest
0 голосов
/ 05 июня 2018

Я получаю эту ошибку («Возникло исключение:« Xunit.Sdk.EqualException »в xunit.assert.dll») при проверке файла Excel с использованием DocumentFormat.OpenXML.Я хочу проверить файл Excel с помощью #, и я использую DocumentFormat.OpenXML

using System;
using System.IO;
using System.IO.Packaging;
using System.Linq;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Validation;
using Xunit;
using P = DocumentFormat.OpenXml.Presentation;
using S = DocumentFormat.OpenXml.Spreadsheet;
using W = DocumentFormat.OpenXml.Wordprocessing;
using A = DocumentFormat.OpenXml.Drawing;
using DW = DocumentFormat.OpenXml.Drawing.Wordprocessing;
using PIC = DocumentFormat.OpenXml.Drawing.Pictures;


namespace ExcelValidation2
{
    class Program
    {
        static void Main(string[] args)
        {
            var excelFile = "ExcelValidation.xlsx";
            var readFile = File.ReadAllBytes(excelFile);
            using(MemoryStream ms = new MemoryStream())
            {
                ms.Write(readFile, 0, readFile.Length);
                using (SpreadsheetDocument doc = SpreadsheetDocument.Open(ms, true))
                {
                    //var corePart = doc.CoreFilePropertiesPart;
                    //var appPart = doc.ExtendedFilePropertiesPart;
                    //doc.DeletePart(corePart);
                    //doc.DeletePart(appPart);
                    //doc.AddCoreFilePropertiesPart();
                    //doc.AddExtendedFilePropertiesPart();
                    //doc.AddCustomFilePropertiesPart();
                    //doc.AddDigitalSignatureOriginPart();
                    //doc.AddExtendedPart("realType", "contentType/xml", ".xml");
                    //var tnPart = doc.AddThumbnailPart(ThumbnailPartType.Jpeg);
                    //doc.DeletePart(tnPart);
                    //tnPart = doc.AddThumbnailPart("image/jpg");
                    OpenXmlValidator v = new OpenXmlValidator(DocumentFormat.OpenXml.FileFormatVersions.Office2013);
                    var errs = v.Validate(doc);
                    Assert.Equal(1, errs.Count());
                }
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

, если файл Excel не читается в документах SpreadsheetDocument или поврежденных

DocumentFormat.OpenXml.Packaging.OpenXmlPackageException: «Указанный пакет недействителен.Основная часть отсутствует. ”

if Assert.Equal (1, errs.Count ());

System.InvalidOperationException:« Assert.Equals не должно бытьиспользуется для утверждений, вместо этого используйте Assert.AreEqual (...). ”

вы можете попробовать

Assert.Equal (0, errs.Count ());

Я использую

<package id="DocumentFormat.OpenXml" version="2.8.1" targetFramework="net45" /> <package id="NUnit" version="3.10.1" targetFramework="net45" />

0 голосов
/ 05 июня 2018

Можно проверить этот метод для проверки:

private void ValidateExcel()
{
    try
    {
        var validator = new OpenXmlValidator();
        int count = 0;
        foreach (ValidationErrorInfo error in validator.Validate(SpreadsheetDocument.Open(openFileDialog1.FileName, true)))
        {

            count++;
            lblError.Text += ("Error Count : " + count) + "\r\n";
            lblError.Text += ("Description : " + error.Description) + "\r\n";
            lblError.Text += ("Path: " + error.Path.XPath) + "\r\n";
            lblError.Text += ("Part: " + error.Part.Uri) + "\r\n";
        }
        Console.ReadKey();
    }
    catch (Exception ex)
    {
        lblError.Text += (ex.Message);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...