标签: openxml

如何克服 OpenXML 的 8000 个字符限制?

我正在使用 OpenXML 在 SQL 中加载 XML,同时声明变量我可以达到的最大值是 8000 个字符:

DECLARE @xml_text varchar(8000)
Run Code Online (Sandbox Code Playgroud)

由于文本,ntext 不允许与 openXML 一起使用,我还有什么其他替代方法可以在 SQL 中加载整个 XML(超过 20000 个字符)?

sql sql-server sqlxml openxml

2
推荐指数
1
解决办法
1894
查看次数

确定 xlsx 单元格是否为 Excel 2007 电子表格的日期格式

我正在处理一些通过解析 xml 从 xlsx 文件读取数据的代码。除了日期单元格之外,一切都非常简单。

日期存储为整数,并有一个“s”属性,它是样式表的索引,可用于获取日期格式字符串。以下是之前 stackoverflow 问题中的一些示例,链接如下:

19 = 'h:mm:ss 上午/下午';

20 = 'h:mm';

21 = 'h:mm:ss';

22 = 'm/d/yy h:mm';

这些是来自 ooxml 标准的内置日期格式字符串,但是似乎 excel 倾向于使用自定义格式字符串而不是内置字符串。这是来自 Excel 2007 电子表格的示例格式。numFmtId 大于 164 是自定义格式。

<numFmt formatCode="MM/DD/YY" numFmtId="165"/>
Run Code Online (Sandbox Code Playgroud)

确定单元格是否应该格式化为日期很困难,因为我能找到的唯一指标是 formatCode。这显然是一个日期,但可以通过多种方式对单元格进行格式化。我最初的尝试是在 formatCode 中查找 Ms、Ds 和 Ys,但这似乎有问题。

有没有人有这个问题的运气?目前似乎标准 excel 阅读库缺乏 xlsx 支持。我已经通读了标准,并在没有多少运气的情况下挖掘了很多 xlsx 文件。

最好的信息似乎来自这个 stackoverflow 问题:

什么表示办公室打开的 xml 单元格包含日期时间值

谢谢!

python excel openxml xlsx

2
推荐指数
1
解决办法
3635
查看次数

打开 Xml:Word 创建一个新文档并从另一个文档中添加一个段落

我有一个文档,我正在通过获取段落进行迭代。对于这些段落中的每一个,我都需要创建一个新文档并保存它。我不知道如何将源文档中的段落添加到新文档中。

        foreach (var p in paragraphsFromSourceDocument)
        {
            using (var memoryStream = new MemoryStream())
            {
                var doc = WordprocessingDocument.Create(memoryStream, WordprocessingDocumentType.Document);
                doc.AddMainDocumentPart();

                // Create the Document DOM. 
                doc.MainDocumentPart.Document = new Document();
                doc.MainDocumentPart.Document.Body = new Body();

                //Add the paragraph 'p' to the Body here:
                // HOW ?????????

                doc.MainDocumentPart.Document.Save();
            }
        }
Run Code Online (Sandbox Code Playgroud)

openxml openxml-sdk

2
推荐指数
1
解决办法
3928
查看次数

如果可能,防止表格越过一页

我正在使用 OpenXML 生成一个包含数千个表的 word 文档。其中一些跨越整个页面的长度,这很好,因为无法防止这种情况发生,但是,许多表只包含几行。有没有我可以设置的属性来防止这些表被破坏?

当只有两行的表格被拆分到两页时,或者当关键行是上一页上唯一拆分的行时,这看起来很糟糕。我花了大量时间浏览 MSDN 页面,但没有运气……希望之前有人这样做过。

c# ms-word openxml

2
推荐指数
1
解决办法
4297
查看次数

读取创建的excel(打开xml)时共享字符串表返回null

我正在使用 open xml sdk 创建 excel 文件。我想使用 open xml 阅读它。当我想阅读它时,我在这一行出错
SharedStringTablePart sstpart = workbookPart.GetPartsOfType<SharedStringTablePart>().First();it return null

如果我打开excel文件并再次保存。它会创建共享字符串表并运行。

从excel读取

#region OpenFile
        public void  OpenFile(string directory)
        {
            try
            {
                fs = new FileStream(directory, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                doc = SpreadsheetDocument.Open(fs, false);
            }
            catch (FileNotFoundException ex)
            {
                string exception = string.Format("Doya bulunamad?{0}", directory); 
                throw new ApplicationException(exception);
            }
        }
        #endregion

        #region GetWorkSheet
        public void AssignWorkSheet(int sheetID)
        {
            if (fs == null || doc == null)
                throw new ApplicationException("Dosya aç?lamad?");

            WorkbookPart workbookPart = doc.WorkbookPart;
            SharedStringTablePart sstpart …
Run Code Online (Sandbox Code Playgroud)

c# openxml openxml-sdk

2
推荐指数
1
解决办法
6067
查看次数

在任务窗格应用程序/office.js 中检索整个 Word 文档

在 Word 2013(桌面)和 office.js 中,我们看到一些围绕用户选择 ( GetSelectedDataAsync, SetSelectedDataAsync) 的功能,但没有任何功能可以让您查看整个 (OpenXML) 文档。我错过了什么吗?

ms-office openxml apps-for-office

2
推荐指数
1
解决办法
1531
查看次数

OpenXml DataValidation 为列设置预定义列表

我正在使用 OpenXml 创建 Excel 文件并导出表格数据。一种情况是我希望一列具有预定义值的下拉列表,例如 true 和 false。我跟着这个问题写了如下代码

DataValidation dataValidation = new DataValidation
{
    Type = DataValidationValues.List,
    AllowBlank = true,
    SequenceOfReferences = new ListValue<StringValue>() { InnerText = "B1" },
    //Formula1 = new Formula1("'SheetName'!$A$1:$A$3") // this was used in mentioned question
    Formula1 = new Formula1("True,False") // I need predefined values.
};

DataValidations dvs = worksheet.GetFirstChild<DataValidations>(); //worksheet type => Worksheet
if (dvs != null)
{
    dvs.Count = dvs.Count + 1;
    dvs.Append(dataValidation);
}
else
{
    DataValidations newDVs = new DataValidations();
    newDVs.Append(dataValidation); …
Run Code Online (Sandbox Code Playgroud)

c# excel openxml

2
推荐指数
1
解决办法
2368
查看次数

如何在 OpenXML 中为格式为 (#,###.##) 的十进制创建 CellValue

我目前正在满足使用 Open XML 框架导出 Excel 文件的要求。我遇到的问题是,该电子表格的一列必须是十进制格式 (#,###.##),它必须允许求和。我可以使用以下方法以这种格式完美导出 Excel:

private static Cell CreateTextCell(string header, UInt32 index, object text, CellStyleIndex cellStyle)
{
    var cell = new Cell
    {
        DataType = CellValues.InlineString,
        CellReference = header + index,
        StyleIndex = (UInt32)cellStyle
    };

    var istring = new InlineString();
    var t = new Text { Text = text.ToString() };
    istring.AppendChild(t);
    cell.AppendChild(istring);
    return cell;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我指定了应用我提到的格式的StyleIndex。但问题在于 Excel 将此值识别为文本:

在此处输入图片说明

这就是为什么我尝试创建一个新方法,该方法在我想在文件中创建小数时立即调用:

private static Cell CreateValueCell(string header, UInt32 index, decimal value, CellStyleIndex cellStyle)
{
     var cell = new …
Run Code Online (Sandbox Code Playgroud)

c# excel openxml

2
推荐指数
1
解决办法
9713
查看次数

无法使用 openxml 在 excel 中设置所需的背景颜色

我是新手打开 xml 并尝试将标题行的背景颜色设置为灰色,但它始终将其设置为黑色。请参考我正在使用的以下代码。

return new Stylesheet(
            new Fonts(
                new Font(                                                               // Index 0 - The default font.
                    new DocumentFormat.OpenXml.Spreadsheet.FontSize() { Val = 11 },
                    new Color() { Rgb = new HexBinaryValue() { Value = "000000" } },
                    new FontName() { Val = "Calibri" }),
                new Font(                                                               // Index 1 - The bold white font.
                    new DocumentFormat.OpenXml.Spreadsheet.Bold(),
                    new DocumentFormat.OpenXml.Spreadsheet.FontSize() { Val = 11 },
                    new DocumentFormat.OpenXml.Spreadsheet.Color() { Rgb = new HexBinaryValue() { Value = "ffffff" } },
                    new DocumentFormat.OpenXml.Spreadsheet.FontName() { Val …
Run Code Online (Sandbox Code Playgroud)

.net c# excel openxml openxml-sdk

2
推荐指数
1
解决办法
4660
查看次数

使用开放XML创建Excel文件

我正在尝试使用Open XML创建文件,但是当尝试仅添加标题的第一行时,文件已损坏且无法打开,有人可以告诉我我在这里做错了吗?

using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create("C:\\testpdfs\\mytest.xlsx", SpreadsheetDocumentType.Workbook))
            {
                // Add a WorkbookPart to the document.
                WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
                workbookpart.Workbook = new Workbook();

                // Add a WorksheetPart to the WorkbookPart.
                WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
                worksheetPart.Worksheet = new Worksheet(new SheetData());

                // Add Sheets to the Workbook.
                Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.
                    AppendChild<Sheets>(new Sheets());

                // Append a new worksheet and associate it with the workbook.
                Sheet sheet = new Sheet()
                {
                    Id = spreadsheetDocument.WorkbookPart.
                    GetIdOfPart(worksheetPart),
                    SheetId = 1,
                    Name = ViewBag.Title
                }; …
Run Code Online (Sandbox Code Playgroud)

excel row spreadsheet cell openxml

2
推荐指数
1
解决办法
5191
查看次数