标签: openxml

使用SSIS填充使用OOXML生成的Excel工作簿

我们正在尝试使用OOXML生成MS Excel工作簿并使用SSIS填充数据.我们能够生成工作簿和工作表,还能够在标题单元格中创建列和插入数据.我们还可以使用SSIS填充数据.

但Sheet(DocumentFormat.OpenXml.Spreadsheet.Sheet)和所有单元格(DocumentFormat.OpenXml.Spreadsheet.Cell)成为OpenXmlUnknownElement.因此,我们无法使用以下代码读取工作表/单元格:Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().Where(s => s.Name == "Sheet1").SingleOrDefault<Sheet>();

如果我们首先使用MS Excel打开并保存,我们可以读取相同的文件.有谁知道如何解决这个问题?

excel ssis openxml spreadsheetml openxml-sdk

9
推荐指数
1
解决办法
1174
查看次数

从OpenXml Excel文件中读取日期

我正在尝试使用SharpZipLib从.xlsx文件中读取数据以解压缩(在内存中)并读取内部xml文件.一切都很好,但识别日期 - 它们以julean格式存储,我需要以某种方式识别数字是日期还是只是数字.在另一个主题(不幸的是它死了,我需要快速回答)我从Mark Ba​​ker那里了解了一些东西,但它仍然不够......

"Excel将日期存储为浮动值...整数部分是自19/1年1月1日以来的天数(或1/1/1904,具体取决于使用的日历),小数部分是一天的比例(即时间部分)......由于1900年被认为是闰年,因此稍微变得尴尬.

区分数据和数字的唯一方法是数字格式掩码.如果您可以读取格式掩码,则可以使用它来将值标识为日期而不是数字...然后从基准日期计算日期值/格式."

"但是日期的属性"s"是否始终具有"1"的值?我知道它定义了样式,但也许?;)"

s属性引用styles.xml中的样式xf条目,并且日期并不总是条目1 ...这取决于工作簿中使用了多少不同的样式.样式xf又引用数字格式掩码.要识别包含日期的单元格,您需要执行样式xf - >数字格式查找,然后确定该数字格式掩码是否是日期/时间数字格式掩码(而不是例如百分比或会计数字格式掩码)

"还有一个问题 - 我现在正在查看style.xml的内容,在我看到的元素中,我看到的元素如下:"<xf numFmtId ="14"... applyNumberFormat ="1"/>","<xf numFmtId = "1"... applyNumberFormat ="1"/>"等,但没有<numFmts>部分...是否有"标准"格式?或者我只是遗漏了什么?"

有人可以帮帮我吗?提前致谢.

xml vb.net excel openxml .net-2.0

9
推荐指数
3
解决办法
1万
查看次数

如何使用Apache POI将HSSFWorkbook转换为XSSFWorkbook?

如何转换

org.apache.poi.hssf.usermodel.HSSFWorkbook
Run Code Online (Sandbox Code Playgroud)

org.apache.poi.xssf.usermodel.XSSFWorkbook
Run Code Online (Sandbox Code Playgroud)

在Apache POI?

环境 :

  • JSE1.6
  • JBossAS 4.3.2
  • POI 3.7

java openxml apache-poi

9
推荐指数
1
解决办法
4万
查看次数

如何在打开的xml上摆脱我的"After Spacing"

在开放XML中,我的word文档默认为"Spacing After:10 pt"如何将其更改为0,因此没有间距.

这是我的代码,它几乎从数据库中获取信息并将其放在word文档上以便能够打印出来.但是间距使得文档太大了.

using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(filepath,  WordprocessingDocumentType.Document)) {
    MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
    mainPart.Document = new Document();
    Body body = mainPart.Document.AppendChild(new Body());

    Paragraph para_main = body.AppendChild(new Paragraph());
    Run run_main = para_main.AppendChild(new Run());

    // Goes through all of the forms
    foreach (var form in forms) {
        Table table = new Table();
        // Initialize all of the table properties
        TableProperties tblProp = new TableProperties(
            new TableBorders(
                new TopBorder() { Val = new EnumValue<BorderValues>(BorderValues.BasicBlackSquares), Size = 16 },
                new LeftBorder() { …
Run Code Online (Sandbox Code Playgroud)

c# ms-word openxml

9
推荐指数
1
解决办法
7788
查看次数

Coldfusion OpenXml错误:无法加载文件或程序集'DocumentFormat.OpenXml'

我是.net编码器,我对ColdFusion真的很新.我写了一个自动生成发票的.dll库.我需要使用ColdFusion应用程序中的库.我已经成功地将库中的类作为coldfusion对象加载,因为我可以调用这些方法.但是,我的类中有一个方法使用WordprocessingDocument,它是DocumentFormat.OpenXml.Packaging的一个类.我实际上收到此错误:

System.IO.FileNotFoundException:无法加载文件或程序集'DocumentFormat.OpenXml,Version = 2.5.5631.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.该系统找不到指定的文件.文件名:'DocumentFormat.OpenXml,Version = 2.5.5631.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'位于InvoiceLibrary.DocumentHandler.ProcessDocument()的InvoiceLibrary.DocumentHandler.ConvertDocumentToDOCX(字符串文件
)

我导入了DocumentFormat.OpenXml.dll,因此是WindowsBase.dll文件

<cfObject type=".NET" name="WordprocessingDocument"
     class="DocumentFormat.OpenXml.Packaging.WordprocessingDocument" 
     assembly="C:\Users\mydocs\Documents\Visual Studio 2012\Projects\InvoiceGenerator\InvoiceLibrary\bin\Release\DocumentFormat.OpenXml.dll,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\WindowsBase.dll">
Run Code Online (Sandbox Code Playgroud)

我需要你的指导我做错了什么或我在这里缺少什么?

.net c# coldfusion openxml

9
推荐指数
1
解决办法
6883
查看次数

使用XML直接签署Office Word文档

我正在尝试使用直接XML格式的C#签署Microsoft Office Word文件.

有一些问题,这里出现了模棱两可的问题:

  • 我应该如何填写摘要值,我应该为每个参考准确消化什么值,以及我应该为每个转换消化什么值?
  • 我应该签署什么价值来创建SignatureValue
  • 我应该在x509数据中包含哪些证书以及如何?(我们没有确切的证书,所以我们非常感谢您创建一个证书.)

最后一个问题是我正确地这样做了吗?也许这里有问题,我错过了一个软件包,否则它本身会与openxml文件交互并签名.

但请记住,我实际上是尝试使用外部令牌签署数据,该外部令牌具有可用的pkcs11接口(但没有CSP),所以我使用了PKCS11 Interop库将其迁移到c#,但我在这里仍然有点困惑.

  • 有没有我可以用来签署word文档的包?
  • 或者是否有一个简化openXML交互的包?
  • 或者我必须手动完成吗?

只是为了抬头任何执行openXML交互的库也应该允许我使用pkcs11命令对文档进行签名(即,它给我字节流来签名和消化但是其他部分本身,pkcs11实际上不应该被认为是一个重要性在这里(你可以用我的自定义算法替换它))

BTW中的签名构建器如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="idPackageSignature">
  <SignedInfo>
    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
    <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#idPackageObject">
      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
      <DigestValue/>
    </Reference>
    <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI="#idOfficeObject">
      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
      <DigestValue/>
    </Reference>
    <Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#idSignedProperties">
      <Transforms>
        <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
      </Transforms>
      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
      <DigestValue/>
    </Reference>
  </SignedInfo>
  <SignatureValue/>
  <KeyInfo>
    <X509Data>
      <X509Certificate/>
    </X509Data>
  </KeyInfo>
  <Object Id="idPackageObject">
    <Manifest>
      <Reference URI="/_rels/.rels?ContentType=application/vnd.openxmlformats-package.relationships+xml">
        <Transforms>
          <Transform Algorithm="http://schemas.openxmlformats.org/package/2006/RelationshipTransform">
            <mdssi:RelationshipReference xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" SourceId="rId1"/>
          </Transform>
          <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
        <DigestValue/>
      </Reference>
      <Reference …
Run Code Online (Sandbox Code Playgroud)

c# xml ms-office openxml

9
推荐指数
1
解决办法
1090
查看次数

如何在OPENXML电子表格单元格中插入换行符?

我目前使用这样的东西在单元格中插入内联字符串:

new Cell() 
{ 
    CellReference = "E2", 
    StyleIndex = (UInt32Value)4U, 
    DataType = CellValues.InlineString, 
    InlineString = new InlineString(new Text( "some text")) 
}
Run Code Online (Sandbox Code Playgroud)

但是\n插入换行符不起作用,我该怎么做呢?

谢谢


响应

new Cell(
         new CellValue("string \n string")
        ) 
    { 
        CellReference = "E2", 
        StyleIndex = (UInt32Value)4U, 
        DataType = CellValues.String         
    }
Run Code Online (Sandbox Code Playgroud)

c# spreadsheet line-breaks cell openxml

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

打开XML SDK以编辑活动文档

是否可以使用Open XML sdk来操作当前在Office应用程序中打开的文档部分(word/ppt).我知道最简单的方法是使用VSTO,但它的速度很慢并且会使用剪贴板来插入元素,OXML sdk是直接且简单的.

如果有人可以发布一些很棒的代码示例.

在此先感谢
Rakesh

office-2007 openxml

8
推荐指数
2
解决办法
2116
查看次数

如何使用OpenXml 2.0将任何文件类型嵌入到Microsoft Word中

我花了很多时间试图找出一种使用OpenXml 2.0将任何文件嵌入Microsoft Word的好方法; Office文档相当容易,但其他文件类型如PDF,TXT,GIF,JPG,HTML等等.

在C#中使用任何文件类型的好方法是什么?

c# ms-word openxml openxml-sdk

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

Excel在后面的代码中将数据添加到WorksheetPart

大家好我在以下代码中创建一个包含3个工作表的Excel文件.

using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Create(path + @"\UrlReport.xlsx", SpreadsheetDocumentType.Workbook))
            {
                // create the workbook
                spreadSheet.AddWorkbookPart();
                spreadSheet.WorkbookPart.Workbook = new DocumentFormat.OpenXml.Spreadsheet.Workbook();

                // CREATE FIRST SHEET
                WorksheetPart newWorksheetPart1 = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>();

                newWorksheetPart1.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet();

                // create sheet data
                newWorksheetPart1.Worksheet.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.SheetData());

                // save worksheet
                newWorksheetPart1.Worksheet.Save();

                // create the worksheet to workbook relation
                spreadSheet.WorkbookPart.Workbook.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheets());
                spreadSheet.WorkbookPart.Workbook.GetFirstChild<DocumentFormat.OpenXml.Spreadsheet.Sheets>().AppendChild(new DocumentFormat.OpenXml.Spreadsheet.Sheet()
                {
                    Id = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart1),
                    SheetId = 1,
                    Name = "Sheet1"
                });

                //CREATE SECOND SHEET
                WorksheetPart newWorksheetPart2 = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>();
                newWorksheetPart2.Worksheet = new DocumentFormat.OpenXml.Spreadsheet.Worksheet();

                // create sheet data
                newWorksheetPart2.Worksheet.AppendChild(new DocumentFormat.OpenXml.Spreadsheet.SheetData()); …
Run Code Online (Sandbox Code Playgroud)

.net c# excel openxml openxml-sdk

8
推荐指数
1
解决办法
1万
查看次数