编程语言
首页 > 编程语言> > c# – OpenXML Spreadsheet-在写入单元格值时保留值之前或之后的空间

c# – OpenXML Spreadsheet-在写入单元格值时保留值之前或之后的空间

作者:互联网

我正在使用OPENXML SDK 2.0来传输电子表格文件.源数据来自数据表,并使用openxml将其写入Spreadsheet.如果数据表的列数据中有一个具有“Treshold%”(此文本上面有选项卡空间)并且同样写入excel但是在excel单元格中将其写入“Treshold%”并删除标签空间.

我使用的代码如下.使用workSheetWriter.PasteText和workSheetWriter.PasteValue方法.

WorksheetWriter workSheetWriter = new WorksheetWriter(spreadSheet, workSheet);

int intValue = 0;
if (strValue.Contains("$"))
{
    strValue = strValue.Replace("$", "");
    strValue = strValue.Replace(",", "");

    workSheetWriter.PasteValue(cellLocation, strValue, CellValues.Number);
}
else if (int.TryParse(strValue, out intValue))
{
    workSheetWriter.PasteValue(cellLocation, strValue, CellValues.Number);
}
else if (string.IsNullOrEmpty(strValue))
{
    workSheetWriter.PasteText(cellLocation, strValue);
}
else
{
    workSheetWriter.PasteText(cellLocation, strValue);
}

请帮忙.如何将开头的标签空间(Treshold%)中的值写入excel单元格中的格式相同?

解决方法:

I am using OPENXML SDK 2.0

由于OpenXML SDK 2.0中没有workSheetWriter类,我想你正在使用这个库:Simple OOXML

我不使用这个库,但是,

>从我在CodePlex上的browserCode中看到的代码,
>根据我的测试,
>并根据这个问题What is the difference between CellValues.InlineString and CellValues.String in OpenXML?,

我认为你不能使用这些方法,因为.PastText和.PasteValue方法使用CellValues.String和CellValue存储文本,这会导致忽略空间:

{
    cell.CellValue = new CellValue(value);
    cell.DataType = new EnumValue<CellValues>(type);
}

通过仅使用OPENXML SDK 2.0,我可以通过使用CellValues.InlineString类型,InlineString和Text类来完成您想要的(保留空间):

Text text1 = new Text() {  space = SpaceProcessingModeValues.Preserve};
text1.Text = " Text with space at beginning";
cell.InlineString = new InlineString(text1);
cell.DataType = new EnumValue<CellValues>(CellValues.InlineString);

标签:c,openxml,openxml-sdk,spreadsheetml
来源: https://codeday.me/bug/20190620/1244007.html