我使用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)
除了 @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)