EPLus Excel 사용 - 셀 좌측 상단의 Excel 오류 확인 무시 또는 녹색 태그 제거 방법
저는 Excel 2007 파일을 내보내기 위해 EPLus를 사용합니다.파일은 정상적으로 내보낼 수 있지만 열 형식 설정에 문제가 있습니다.숫자 스타일의 문자열 열(구매 주문번호 49000001)을 각 셀 왼쪽 상단에 녹색 태그와 함께 내보냅니다. 어떻게 제거할 수 있나요?
숫자 형식을 "일반"으로 설정하려고 하지만 작동하지 않습니다.
제발 도와주세요.
p.si는 C#를 사용합니다.
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);
            }
        }
    }
}
다음 코드를 추가하여 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);
    }
}
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;
@briddums의 답변 외에도 EPLus 버전 5에서는 오류를 무시할 수 있으며 EPLus 소스를 터치할 필요가 없습니다.
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
이 코드는 작동합니다.
private void removingGreenTagWarning(ExcelWorksheet template1, string address)
            {
                var xdoc = template1.WorksheetXml;
                //Create the import nodes (note the plural vs singular
                var ignoredErrors = xdoc.CreateNode(System.Xml.XmlNodeType.Element, "ignoredErrors", xdoc.DocumentElement.NamespaceURI);
                var ignoredError = xdoc.CreateNode(System.Xml.XmlNodeType.Element, "ignoredError", xdoc.DocumentElement.NamespaceURI);
                ignoredErrors.AppendChild(ignoredError);
                //Attributes for the INNER node
                var sqrefAtt = xdoc.CreateAttribute("sqref");
                sqrefAtt.Value = address;// Or whatever range is needed....
                var flagAtt = xdoc.CreateAttribute("numberStoredAsText");
                flagAtt.Value = "1";
                ignoredError.Attributes.Append(sqrefAtt);
                ignoredError.Attributes.Append(flagAtt);
                //Now put the OUTER node into the worksheet xml
                xdoc.LastChild.AppendChild(ignoredErrors);
            }
로 삼다
removingGreenTagWarning(template1, template1.Cells[1, 1, 100, 100].Address);
Purchase Order No 값을 Number로 변환한 다음 셀에 저장합니다.각 셀의 왼쪽 상단에 있는 녹색 태그는 숫자를 문자열로 저장하고 있기 때문에 오는 것입니다.
예, EPPlus는 데이터의 값에 따라 데이터를 숫자로 취급할 수 없습니다.기본 데이터가 문자열 데이터 유형인 경우 숫자 데이터 유형으로 가져오도록 시도할 수 있습니다.저장 프로시저에서 데이터를 가져오는 경우 숫자 값으로 데이터를 가져오려고 합니다.우리가 그것을 시행할 때 문제가 있었습니다.우리는 웹에 대해서도 동일한 저장 프로시저를 사용하여 엑셀을 생성하였습니다.웹 UI는 포맷 상의 이유로 문자열 데이터 형식이 필요했고 EPPlus는 숫자 형식으로 표시할 수 있도록 분명히 숫자 형식이 필요했습니다.해결책은 EPLus를 C# 코드로 사용하여 Excell로 내보낼 때 필요한 데이터를 숫자로 변환하는 것이었습니다.따라서 변환 함수를 작성하여 DataTable에 필요한 필드를 필요한 데이터 유형으로 변환(또는 저장 프로시저에서 캐스트 또는 변환을 사용하여 변환 로직을 구현)해야 합니다.
요약: - EPLus를 이용하여 Excel Sheet로 전송하기 전에 얻은 DataTable에 있는 데이터 타입의 열을 변환하는 C# 함수를 작성합니다.
저는 이 문제를 훨씬 더 쉽게 해결했습니다.예를 들어 값 "123"을 문자열이 아닌 개체로 정의하면 엑셀 파일에 저장됩니다.
사용가능
worksheet.Cell[1,1].Formula = "TEXT(" + cellvalue ")";
언급URL : https://stackoverflow.com/questions/11858109/using-epplus-excel-how-to-ignore-excel-error-checking-or-remove-green-tag-on-t
'programing' 카테고리의 다른 글
| jQuery가 브라우저에 쿠키를 읽고 쓸 수 있습니까? (0) | 2023.10.11 | 
|---|---|
| Firefox에서 로컬 스토리지를 보거나 삭제하는 방법은 무엇입니까? (0) | 2023.10.11 | 
| WordPress 홈 페이지에 주석 표시 (0) | 2023.10.11 | 
| org.springframework.web.reactive.기능.지원되지 않는 MediaType 예외:내용 유형 'text/xml';charset=UTF-8' 바디 지원 안 됨유형 (0) | 2023.10.11 | 
| CSS 스타일시트는 어떤 순서로 재정의됩니까? (0) | 2023.10.11 |