我们正在尝试使用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打开并保存,我们可以读取相同的文件.有谁知道如何解决这个问题?
我正在尝试使用SharpZipLib从.xlsx文件中读取数据以解压缩(在内存中)并读取内部xml文件.一切都很好,但识别日期 - 它们以julean格式存储,我需要以某种方式识别数字是日期还是只是数字.在另一个主题(不幸的是它死了,我需要快速回答)我从Mark Baker那里了解了一些东西,但它仍然不够......
"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>部分...是否有"标准"格式?或者我只是遗漏了什么?"
有人可以帮帮我吗?提前致谢.
如何转换
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?
环境 :
在开放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) 我是.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)
我需要你的指导我做错了什么或我在这里缺少什么?
我正在尝试使用直接XML格式的C#签署Microsoft Office Word文件.
有一些问题,这里出现了模棱两可的问题:
SignatureValue?最后一个问题是我正确地这样做了吗?也许这里有问题,我错过了一个软件包,否则它本身会与openxml文件交互并签名.
但请记住,我实际上是尝试使用外部令牌签署数据,该外部令牌具有可用的pkcs11接口(但没有CSP),所以我使用了PKCS11 Interop库将其迁移到c#,但我在这里仍然有点困惑.
只是为了抬头任何执行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) 我目前使用这样的东西在单元格中插入内联字符串:
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) 是否可以使用Open XML sdk来操作当前在Office应用程序中打开的文档部分(word/ppt).我知道最简单的方法是使用VSTO,但它的速度很慢并且会使用剪贴板来插入元素,OXML sdk是直接且简单的.
如果有人可以发布一些很棒的代码示例.
在此先感谢
Rakesh
我花了很多时间试图找出一种使用OpenXml 2.0将任何文件嵌入Microsoft Word的好方法; Office文档相当容易,但其他文件类型如PDF,TXT,GIF,JPG,HTML等等.
在C#中使用任何文件类型的好方法是什么?
大家好我在以下代码中创建一个包含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) openxml ×10
c# ×6
excel ×3
openxml-sdk ×3
.net ×2
ms-word ×2
xml ×2
.net-2.0 ×1
apache-poi ×1
cell ×1
coldfusion ×1
java ×1
line-breaks ×1
ms-office ×1
office-2007 ×1
spreadsheet ×1
ssis ×1
vb.net ×1