Giter Site home page Giter Site logo

asbjoedt / clisc Goto Github PK

View Code? Open in Web Editor NEW
6.0 2.0 1.0 29.7 MB

Command Line Interface Spreadsheet Count, Convert, Compare & Archive

License: MIT License

C# 100.00%
compare-files conversion opendocument-spreadsheet spreadsheets ooxml-workbooks xlsx archive validation

clisc's Introduction

CLISC

Command Line Interface Spreadsheet Count, Convert, Compare & Archive

A Windows console application made in C#. It is a prototype project for digital archiving of spreadsheets.

๐Ÿณ๏ธโ€๐ŸŒˆ General

  • Batch convert spreadsheets in a directory to .xlsx
  • Include or exclude subdirectories recursively
  • Output results in a new directory with logs in .csv

โž• Count

Count number of spreadsheets in directory by file format.

  • Accepted file extensions: .gsheet, .fods, .numbers, .ods, .ots, .xla, .xlam, .xls, .xlsb, .xlsm, .xlsx, .xlt, .xltm, .xltx
  • .xlsx of Transitional and Strict conformance can be counted separately

๐Ÿช„ Convert

Convert any spreadsheet12 to .xlsx (Transitional conformance).

  • Office Open XML (Excel) with extensions: .xlsb, .xlsm, .xltm, .xltx, .xlsx with Strict conformance
  • Legacy Microsoft Excel with extensions: .xls, .xlt
  • OpenDocument with extensions: .fods, .ods, .ots
  • Apple Numbers with extension: .numbers

๐Ÿ” Compare

Compare original and converted spreadsheets to log differences.3

  • Cell values

๐Ÿ—„๏ธ Archive

The program can convert, package and describe spreadsheets to meet a data quality level, that will enable you to open your spreadsheets many years from now.

  • Convert any spreadsheet12 to both .xlsx (Strict conformance) and .ods
  • Package spreadsheets and metadata in a new archive directory
  • Output all conversions in subdirectories named n+1
  • Rename all conversions 1.xlsx and 1.ods
  • Include copies of the original spreadsheets, this include password protected or otherwise unreadable files
  • Validate spreadsheet against its file format standard (Office Open XML and OpenDocument)
  • Remove cell formula references to other spreadsheets but keep cell values
  • Remove data connections but keep cell values
  • Remove RealTimeData (RTD) functions but keep cell values
  • Remove external object references but copy objects to new subfolder
  • Convert embedded images to .tif
  • Extract all embedded objects to new subfolder
  • Warn if no cell values or objects detected
  • Inform if metadata detected
  • Inform if hyperlinks detected
  • Full compliance option involves
    • Remove printer settings
    • Remove absolute path to local directory
    • Make first sheet active
    • Extract metadata but keep in spreadsheet
    • Extract hyperlinks but keep in spreadsheet
  • Calculate file checksums
  • Zip the archive directory

Dependencies

โš ๏ธ Beyond Compare 4

  • If you want to use the compare function
  • You need to install program in its default directory, or create environment variable "BeyondCompare" with path to your installation

โš ๏ธ LibreOffice

  • If you want to convert OpenDocument spreadsheets and/or use the archiving method
  • You need to install program in its default directory, or create environment variable "LibreOffice" with path to your installation

โš ๏ธ Microsoft Excel

  • If you want to convert legacy Excel and/or use the archiving method, which converts .xlsx conformance from Transitional to Strict

โš ๏ธ ODF Validator 0.11.0

  • If you want to validate .ods spreadsheets
  • You need to install program in "C:\Program Files\ODF Validator" and name program "odfvalidator-0.11.0-jar-with-dependencies.jar", or create environment variable "ODFValidator" with path to your installation
  • ODF Validator needs latest version of Java Development Kit installed

How to use

Download the executable version here. There's no need to install. In your terminal change directory to the folder where CLISC.exe is. Then, to execute the program input:

.\CLISC.exe [your_arguments]

Create your arguments from the following list:

Functions to use (required, pick one of the four)

--function Count
--function CountConvert
--function CountConvertCompare
--function CountConvertCompareArchive

Input directory (required)

--inputdir "[path to input directory]"

Output directory (required)

--outputdir "[path to output directory]"

Include subdirectories from input directory (optional, by default false)

--recurse

Change data to meet all archival requirements (optional, by default false)

--fullcompliance

Example of full usage

.\CLISC.exe --function CountConvertCompareArchive --inputdir "c:\folder" --outputdir "c:\folder" --recurse --fullcompliance

or shorter

.\CLISC.exe -f CountConvertCompareArchive -i "c:\folder" -o "c:\folder" -r -c

If you want to test the application, a sample dataset is provided here.

Packages and software

The following packages and software are used under license in CLISC. Read more.

Footnotes

  1. See definition of accepted spreadsheet file formats. โ†ฉ โ†ฉ2

  2. The program currently has a conversion filesize limit of 150MB to prevent excessive performance bottlenecks. Larger filesize spreadsheets should be converted manually. โ†ฉ โ†ฉ2

  3. The program can currently not compare cell formatting, embedded objects, charts and other advanced spreadsheet features. โ†ฉ

clisc's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

carlwilson

clisc's Issues

Unsupported BOF found of type VBModule

When using NPOI as library to convert .xls and .xlt files with macros or some kind of VB code, it may result in the hint below, and a long waiting time before conversion of the next file begins.

Unsupported BOF found of type VBModule

Wrong Strict namespaces for relationships in .rels files

Using Excel Interop to convert .xlsx to Strict conformance has error for namespaces for xmlns in element in .rels files, which are not being converted.

Transitional conformance namespace
http://schemas.openxmlformats.org/package/2006/relationships

Is not replaced with a http://purl.oclc.org/... namespace in files such as sheet1.xml.rels, workbook.xml.rels, externallink1.xml.rels

List of external issues

QueryTable from data connections are not removed

Error happens when deleting data connections, where query tables are not referenced in a relationship to a worksheetpart.

--> Id: Sem_MissingReferenceElement
--> Description: Element 'x:connection' referenced by 'queryTable@connectionId' does not exist in part '/WorkbookPart/ConnectionsPart'. The reference value is '1'.
--> Error type: Semantic
--> Node: DocumentFormat.OpenXml.Spreadsheet.QueryTable
--> Path: /x:queryTable[1]
--> Part: /xl/queryTables/queryTable1.xml

Validation of .xlsx Strict reports 45 or more errors

Open XML SDK reports 45 errors for any Strict conformant .xlsx file. The errors are not with the file itself, but with bug in Open XML SDK. THerefore, any Strict .xlsx with these 45 errors are still valid, regardless of the error reports.

My solution for CLISC will be to write a code which ignores these errors and reports Strict valid unless it posses other errors.

The first two errors are unique, but the rest 43 errors are all related to an invalid int32 value, which involves percentages in a string.

I have reported the errors on Microsofts official Github repository for Open XML SDK, adn they have acknowledged these as bugs and explainted why they happen and what effort it will take for them to repair the code. See issue 1 and issue 2.

List of the 45 errors

--> Error 1
----> Description: The 'dateCompatibility' attribute is not declared.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Spreadsheet.WorkbookProperties
----> Path: /x:workbook[1]/x:workbookPr[1]
----> Part: /xl/workbook.xml
--> Error 2
----> Description: The element has unexpected child element 'http://schemas.openxmlformats.org/spreadsheetml/2006/main:start'. List of possible elements expected: <http://schemas.openxmlformats.org/spreadsheetml/2006/main:left>.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Spreadsheet.Border
----> Path: /x:styleSheet[1]/x:borders[1]/x:border[1]
----> Part: /xl/styles.xml
----> Related Node: DocumentFormat.OpenXml.Spreadsheet.StartBorder
----> Related Node Inner Text:
--> Error 3
----> Description: The attribute 'pos' has invalid value '100%'. The string '100%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.GradientStop
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[3]
----> Part: /xl/theme/theme1.xml
--> Error 4
----> Description: The attribute 'val' has invalid value '120%'. The string '120%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.SaturationModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[3]/a:schemeClr[1]/a:satMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 5
----> Description: The attribute 'val' has invalid value '63%'. The string '63%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Shade
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[3]/a:schemeClr[1]/a:shade[1]
----> Part: /xl/theme/theme1.xml
--> Error 6
----> Description: The attribute 'pos' has invalid value '50%'. The string '50%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.GradientStop
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[2]
----> Part: /xl/theme/theme1.xml
--> Error 7
----> Description: The attribute 'val' has invalid value '103%'. The string '103%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.LuminanceModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[2]/a:schemeClr[1]/a:lumMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 8
----> Description: The attribute 'val' has invalid value '90%'. The string '90%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Shade
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[2]/a:schemeClr[1]/a:shade[1]
----> Part: /xl/theme/theme1.xml
--> Error 9
----> Description: The attribute 'val' has invalid value '130%'. The string '130%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.SaturationModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[2]/a:schemeClr[1]/a:satMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 10
----> Description: The attribute 'val' has invalid value '98%'. The string '98%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Tint
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[2]/a:schemeClr[1]/a:tint[1]
----> Part: /xl/theme/theme1.xml
--> Error 11
----> Description: The attribute 'pos' has invalid value '0%'. The string '0%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.GradientStop
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[1]
----> Part: /xl/theme/theme1.xml
--> Error 12
----> Description: The attribute 'val' has invalid value '102%'. The string '102%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.LuminanceModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[1]/a:schemeClr[1]/a:lumMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 13
----> Description: The attribute 'val' has invalid value '98%'. The string '98%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Shade
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[1]/a:schemeClr[1]/a:shade[1]
----> Part: /xl/theme/theme1.xml
--> Error 14
----> Description: The attribute 'val' has invalid value '150%'. The string '150%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.SaturationModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[1]/a:schemeClr[1]/a:satMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 15
----> Description: The attribute 'val' has invalid value '93%'. The string '93%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Tint
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[1]/a:schemeClr[1]/a:tint[1]
----> Part: /xl/theme/theme1.xml
--> Error 16
----> Description: The attribute 'val' has invalid value '170%'. The string '170%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.SaturationModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:solidFill[2]/a:schemeClr[1]/a:satMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 17
----> Description: The attribute 'val' has invalid value '95%'. The string '95%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Tint
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:bgFillStyleLst[1]/a:solidFill[2]/a:schemeClr[1]/a:tint[1]
----> Part: /xl/theme/theme1.xml
--> Error 18
----> Description: The attribute 'val' has invalid value '63%'. The string '63%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Alpha
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:effectStyleLst[1]/a:effectStyle[3]/a:effectLst[1]/a:outerShdw[1]/a:srgbClr[1]/a:alpha[1]
----> Part: /xl/theme/theme1.xml
--> Error 19
----> Description: The attribute 'lim' has invalid value '800%'. The string '800%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Miter
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:lnStyleLst[1]/a:ln[3]/a:miter[1]
----> Part: /xl/theme/theme1.xml
--> Error 20
----> Description: The attribute 'lim' has invalid value '800%'. The string '800%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Miter
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:lnStyleLst[1]/a:ln[2]/a:miter[1]
----> Part: /xl/theme/theme1.xml
--> Error 21
----> Description: The attribute 'lim' has invalid value '800%'. The string '800%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Miter
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:lnStyleLst[1]/a:ln[1]/a:miter[1]
----> Part: /xl/theme/theme1.xml
--> Error 22
----> Description: The attribute 'pos' has invalid value '100%'. The string '100%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.GradientStop
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[3]
----> Part: /xl/theme/theme1.xml
--> Error 23
----> Description: The attribute 'val' has invalid value '78%'. The string '78%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Shade
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[3]/a:schemeClr[1]/a:shade[1]
----> Part: /xl/theme/theme1.xml
--> Error 24
----> Description: The attribute 'val' has invalid value '120%'. The string '120%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.SaturationModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[3]/a:schemeClr[1]/a:satMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 25
----> Description: The attribute 'val' has invalid value '99%'. The string '99%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.LuminanceModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[3]/a:schemeClr[1]/a:lumMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 26
----> Description: The attribute 'pos' has invalid value '50%'. The string '50%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.GradientStop
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[2]
----> Part: /xl/theme/theme1.xml
--> Error 27
----> Description: The attribute 'val' has invalid value '100%'. The string '100%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Shade
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[2]/a:schemeClr[1]/a:shade[1]
----> Part: /xl/theme/theme1.xml
--> Error 28
----> Description: The attribute 'val' has invalid value '100%'. The string '100%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.LuminanceModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[2]/a:schemeClr[1]/a:lumMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 29
----> Description: The attribute 'val' has invalid value '110%'. The string '110%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.SaturationModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[2]/a:schemeClr[1]/a:satMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 30
----> Description: The attribute 'pos' has invalid value '0%'. The string '0%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.GradientStop
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[1]
----> Part: /xl/theme/theme1.xml
--> Error 31
----> Description: The attribute 'val' has invalid value '94%'. The string '94%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Tint
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[1]/a:schemeClr[1]/a:tint[1]
----> Part: /xl/theme/theme1.xml
--> Error 32
----> Description: The attribute 'val' has invalid value '102%'. The string '102%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.LuminanceModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[1]/a:schemeClr[1]/a:lumMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 33
----> Description: The attribute 'val' has invalid value '103%'. The string '103%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.SaturationModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[2]/a:gsLst[1]/a:gs[1]/a:schemeClr[1]/a:satMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 34
----> Description: The attribute 'pos' has invalid value '100%'. The string '100%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.GradientStop
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[3]
----> Part: /xl/theme/theme1.xml
--> Error 35
----> Description: The attribute 'val' has invalid value '81%'. The string '81%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Tint
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[3]/a:schemeClr[1]/a:tint[1]
----> Part: /xl/theme/theme1.xml
--> Error 36
----> Description: The attribute 'val' has invalid value '109%'. The string '109%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.SaturationModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[3]/a:schemeClr[1]/a:satMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 37
----> Description: The attribute 'val' has invalid value '105%'. The string '105%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.LuminanceModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[3]/a:schemeClr[1]/a:lumMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 38
----> Description: The attribute 'pos' has invalid value '50%'. The string '50%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.GradientStop
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[2]
----> Part: /xl/theme/theme1.xml
--> Error 39
----> Description: The attribute 'val' has invalid value '73%'. The string '73%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Tint
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[2]/a:schemeClr[1]/a:tint[1]
----> Part: /xl/theme/theme1.xml
--> Error 40
----> Description: The attribute 'val' has invalid value '103%'. The string '103%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.SaturationModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[2]/a:schemeClr[1]/a:satMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 41
----> Description: The attribute 'val' has invalid value '105%'. The string '105%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.LuminanceModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[2]/a:schemeClr[1]/a:lumMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 42
----> Description: The attribute 'pos' has invalid value '0%'. The string '0%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.GradientStop
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[1]
----> Part: /xl/theme/theme1.xml
--> Error 43
----> Description: The attribute 'val' has invalid value '67%'. The string '67%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.Tint
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[1]/a:schemeClr[1]/a:tint[1]
----> Part: /xl/theme/theme1.xml
--> Error 44
----> Description: The attribute 'val' has invalid value '105%'. The string '105%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.SaturationModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[1]/a:schemeClr[1]/a:satMod[1]
----> Part: /xl/theme/theme1.xml
--> Error 45
----> Description: The attribute 'val' has invalid value '110%'. The string '110%' is not a valid 'Int32' value.
----> ErrorType: Schema
----> Node: DocumentFormat.OpenXml.Drawing.LuminanceModulation
----> Path: /a:theme[1]/a:themeElements[1]/a:fmtScheme[1]/a:fillStyleLst[1]/a:gradFill[1]/a:gsLst[1]/a:gs[1]/a:schemeClr[1]/a:lumMod[1]
----> Part: /xl/theme/theme1.xml

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.