使用EPPlus Excel - 如何忽略excel错误检查或删除单元格左上角的绿色标记

CYK*_*CYK 10 c# excel epplus

我使用EPPlus导出excel 2007文件.该文件可以正常导出,但我在设置列格式时遇到了一些问题.我的带有数字样式的字符串列(采购订单号,例如49000001)将在每个单元格的左上角以绿色标记导出,如何将其删除?

我尝试将数字格式设置为"常规",但它不起作用

请帮忙.

ps我用C#

bri*_*ums 15

EPPLus目前不支持禁用该绿色标记.但是,可以修改项目以抑制它.首先,您需要向项目中添加一个新类ExcelIgnoredError.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace OfficeOpenXml
{
    public class ExcelIgnoredError : XmlHelper
    {
        private ExcelWorksheet _worksheet;

        /// <summary>
        /// Constructor
        /// </summary>
        internal ExcelIgnoredError(XmlNamespaceManager ns, XmlNode node, ExcelWorksheet xlWorkSheet) :
            base(ns, node)
        {
            _worksheet = xlWorkSheet;
        }


        public bool NumberStoredAsText
        {
            get
            {
                return GetXmlNodeBool("@numberStoredAsText");
            }
            set
            {
                SetXmlNodeBool("@numberStoredAsText", value);
            }
        }


        public bool TwoDigitTextYear
        {
            get
            {
                return GetXmlNodeBool("@twoDigitTextYear");
            }
            set
            {
                SetXmlNodeBool("@twoDigitTextYear", value);
            }
        }


        public string Range
        {
            get
            {
                return GetXmlNodeString("@sqref");
            }
            set
            {
                SetXmlNodeString("@sqref", value);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


接下来,您需要修改ExcelWorkSheet.cs,添加以下代码:

public ExcelIgnoredError _ignoredError;

public ExcelIgnoredError IgnoredError
{
    get
    {
        if (_ignoredError == null)
        {
            // Check that ignoredErrors exists
            XmlNode node = TopNode.SelectSingleNode("d:ignoredErrors", NameSpaceManager);

            if (node == null)
            {
                CreateNode("d:ignoredErrors");
            }

            //Check that ignoredError exists
            node = TopNode.SelectSingleNode("d:ignoredErrors/d:ignoredError", NameSpaceManager);

            if (node == null)
            {
                CreateNode("d:ignoredErrors/d:ignoredError");
                node = TopNode.SelectSingleNode("d:ignoredErrors/d:ignoredError", NameSpaceManager);
            }

            _ignoredError = new ExcelIgnoredError(NameSpaceManager, node, this);
        }

        return (_ignoredError);
    }
}
Run Code Online (Sandbox Code Playgroud)


编译EPPPlus解决方案,将其包含在您的项目中,您将能够使用与此类似的代码删除标记:

//Get a reference to the worksheet
ExcelWorkSheet sheet = package.WorkBook.WorkSheets(0);

//Set the cell range to ignore errors on to the whole sheet
sheet.IgnoredError.Range = Sheet.Dimension.Address;

//Do not display the warning 'number stored as text'
sheet.IgnoredError.NumberStoredAsText = true;
Run Code Online (Sandbox Code Playgroud)


Ehs*_*san 5

除了 @briddums 的回答之外,从 EPPlus 版本 5 开始,您可以忽略错误,并且无需接触 EPPlus 源代码。

var p = new ExcelPackage();
var ws = p.Workbook.Worksheets.Add("IgnoreErrors");

ws.Cells["A1"].Value = "1";
ws.Cells["A2"].Value = "2";
var ie = ws.IgnoredErrors.Add(ws.Cells["A2"]);
ie.NumberStoredAsText = true;   // Ignore errors on A2 only
Run Code Online (Sandbox Code Playgroud)


Yog*_*pta 1

将采购订单编号转换为编号,然后存储在单元格中。每个单元格左上角的绿色标签出现,因为您将数字存储为字符串。