我想扫描PowerPoint 2007文件,但我正在尝试使用C++.是否有适用于C++的Open XML解析器?
当我按照本教程学习时:
http://msdn.microsoft.com/en-us/library/cc881781.aspx
打开Excel文档并插入一个空工作表,最终结果是一条消息告诉"Excel找到了不可读的内容......你想要恢复这个工作簿的内容......".如果我恢复所有插入的工作表都是空白的(即使我以编程方式添加内容)
将xlsx重命名为.zip并检查后,显示已创建工作表,并添加了内容.
有类似问题的人吗?这可能是因为没有在新创建的零件之间创建关系......
我们正在.Net framework 4.0中构建我们的应用程序,需要引用OpenXML v2.0 sdk来生成word文档.OpenXML需要.Net 3.5 Sp1(即使我们在系统上安装了.net 4.0,它仍然坚持安装.net 3.5 sp1),所以如果我在我的应用程序中引用OpenXML dll这意味着我无法构建我的应用程序目标.Net框架4.0?
我正在开发一个.NET C#应用程序,需要创建一个Word文档,插入存储在数据库中的RTF文本片段.有谁知道是否有可能以及如何使用OpenXml(或COM互操作)完成此操作?
我不需要将一个完整的RTF文件转换为Word文档.我需要以编程方式创建一个Word文档,并使用C#在word文档的不同位置添加RTF文本.
我有一个问题要问使用OpenXMLWriter.
我目前正在使用下面的代码来创建我的excel文件,但我想设置列的宽度.我该怎么办?
因为我试图在Worksheet()和SheetData()之间编写新的Columns,到目前为止我没有成功.
示例非常有用.感谢它,谢谢!
using (SpreadsheetDocument xl = SpreadsheetDocument.Create("LargeFile.xlsx", SpreadsheetDocumentType.Workbook))
{
List<OpenXmlAttribute> oxa;
OpenXmlWriter oxw;
xl.AddWorkbookPart();
WorksheetPart wsp = xl.WorkbookPart.AddNewPart<WorksheetPart>();
oxw = OpenXmlWriter.Create(wsp);
oxw.WriteStartElement(new Worksheet());
oxw.WriteStartElement(new SheetData());
for (int i = 1; i <= 50000; ++i)
{
oxa = new List<OpenXmlAttribute>();
// this is the row index
oxa.Add(new OpenXmlAttribute("r", null, i.ToString()));
oxw.WriteStartElement(new Row(), oxa);
for (int j = 1; j <= 100; ++j)
{
oxa = new List<OpenXmlAttribute>();
// this is the data type ("t"), with CellValues.String ("str")
oxa.Add(new OpenXmlAttribute("t", …Run Code Online (Sandbox Code Playgroud) 我决定使用.NET 3.5.1但是当我DocumentFormat.OpenXml 2.5使用Install-Package DocumentFormat.OpenXml 添加NuGet包控制台时,我收到了很多警告:
1> C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5):警告MSB3258:主要参考"DocumentFormat.OpenXml,Version = 2.5.5631.0,Culture = neutral,PublicKeyToken = 123,processorArchitecture = MSIL"无法解析,因为它与.NET Framework程序集间接依赖"System.Data.SqlXml,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 123",其版本较高" 4.0.0.0"比当前目标框架中的版本"2.0.0.0".
1> C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5):警告MSB3258:主要参考"DocumentFormat.OpenXml,Version = 2.5.5631.0,Culture = neutral,PublicKeyToken = 123,processorArchitecture = MSIL"无法解析,因为它对.NET Framework程序集具有间接依赖性"System.Security,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 123",其版本更高"4.0. 0.0"比当前目标框架中的版本"2.0.0.0".
1> C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5):警告MSB3268:主要参考"DocumentFormat.OpenXml,Version = 2.5.5631.0,Culture = neutral,PublicKeyToken = 123,processorArchitecture = MSIL"无法解析,因为它对框架程序集"System.Xaml,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 123"有间接依赖,无法在当前目标框架中解析." .NETFramework,版本= V3.5" .要解决此问题,请删除引用"DocumentFormat.OpenXml,Version = 2.5.5631.0,Culture = neutral,PublicKeyToken = 123,processorArchitecture = MSIL"或将应用程序重新定位到包含"System.Xaml,Version = 4.0的框架版本" .0.0,Culture = neutral,PublicKeyToken …
我正在尝试在每个Excel页面上维护一行(标题字段).我正在使用EPPlus库中包含的OpenXML.
我试过以下代码行:
myWorkSheet.PrinterSettings.RepeatRows = New ExcelAddress(String.Format("${0}:${0}", firstRowNummerExcel.ToString()))
Run Code Online (Sandbox Code Playgroud)
这不是错误或崩溃我,但只是没有做任何特别的事情......
PrinterSettings对象似乎有效,因为执行以下代码行有效:
worksheetVertrokkenRunderen.PrinterSettings.ShowHeaders = true
Run Code Online (Sandbox Code Playgroud)
这让我觉得插入的ExcelAddress可能不正确?
我正在尝试开发一个解决方案,该解决方案从ASP.Net Web页面获取输入并将输入值嵌入到MS Word文档中的相应内容控件中.MS Word文档还具有静态数据,其中一些动态数据将嵌入到页眉和页脚字段中.
这里的想法是解决方案应该基于Web.我可以将OpenXML用于此目的或您可以建议的任何其他方法.
非常感谢您提供的所有宝贵意见.我真的很感激他们.
我正在使用EPPlus .NET库(v4.0.4)来解释已保存的Excel工作簿。在一个这样的工作表中,使用Excel的“撇号”技巧将一些空单元格设置为“文本”格式(也就是说,用户在这些单元格中输入了一个撇号,以便Excel将其显示为空白)。
两个此类单元格的示例XML如下:
<c r="F6" s="1" t="inlineStr">
<is>
<t />
</is>
</c>
<c r="G6" s="1" />
Run Code Online (Sandbox Code Playgroud)
在此,F6带有撇号(即是一个空的文本单元格),而G6则真正是空白的。
是否可以inlineStr使用EPPlus 读取此“内联字符串”()属性或以其他方式区分这两个单元格?所述ExcelRange / ExcelRangeBase类具有如特性Value,Formula,Style等,但检查表示所述两个小区以上也看不出它们之间的任何差异对象时。
我知道我可以通过读取原始XML或使用替代库(也许是ClosedXML或类似库)来手动完成此操作,但是如果可能的话,我想使用EPPlus来执行此操作。
这就是我在做的事情:
CellFormat cellFormat =
new CellFormat()
{ NumberFormatId = (UInt32Value)14U,
FontId = (UInt32Value)0U,
FillId = (UInt32Value)0U,
BorderId = (UInt32Value)0U,
FormatId = (UInt32Value)0U,
ApplyNumberFormat = true };
sd.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats.AppendChild<CellFormat>(cellFormat);
_dateStyleIndex = sd.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats.Count() - 1;
Run Code Online (Sandbox Code Playgroud)
然后在我的代码后面的某个地方
else if (type == DataTypes.DateTime)
{
DateTime dateTime = DateTime.Parse(text);
double oaValue = dateTime.ToOADate();
cell.CellValue = new CellValue(oaValue.ToString(CultureInfo.InvariantCulture));
cell.DataType = new EnumValue<CellValues>(CellValues.Date);
cell.StyleIndex = Convert.ToUInt32(_dateStyleIndex);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用Open XML SDK Tool验证生成的excel文件时,我收到以下验证错误:属性't'具有无效值'd'.枚举约束失败.
我在这里错过了什么?提前谢谢你的帮助.
PS:添加,这就是x:sheetData的样子.它给了我验证错误:
<x:sheetData xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:row r="2">
<x:c r="B2" t="s">
<x:v>0</x:v>
</x:c>
<x:c r="C2" t="s">
<x:v>1</x:v>
</x:c> …Run Code Online (Sandbox Code Playgroud)