在写单元格值时保留值前后的空间

本文关键字:空间 单元格 保留 | 更新日期: 2023-09-27 18:14:09

我使用OPENXML SDK 2.0来流式传输电子表格文件。源数据来自数据表,并使用openxml将其写入电子表格。如果有一个数据表的列数据有" threshold %"(这个文本在它前面有制表符空间),并且同样被写入excel,但它正在写入" threshold %"在excel单元格中并删除制表符空间。

我使用的代码如下。使用workSheetWriter.PasteTextworkSheetWriter.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);
}

请帮忙。如何将tab空格开头的值(threshold %)写入excel单元格中?

在写单元格值时保留值前后的空间

我正在使用OPENXML SDK 2.0

因为没有workSheetWriter类在OpenXML SDK 2.0,我猜你正在使用这个库:简单的OOXML

我不使用这个库,但是,

  • 从代码我看到在CodePlex上的browserCode,
  • 根据我的测试,
  • 和根据这个SO问题CellValues之间的区别是什么。InlineString和CellValues。字符串在OpenXML?

我认为你不能通过使用这些方法,因为.PastText.PasteValue方法是通过使用CellValues.StringCellValue来存储文本的,这导致了空间被忽略:

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

通过使用OPENXML SDK 2.0仅,我能够完成你想要的(保留空间)通过使用CellValues.InlineString类型,InlineStringText类:

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