有没有办法在没有安装MS Word的情况下打印OOXML文档(.docx文件)?
它通过MS Word界面很好地工作,但我需要找到一种方法在没有安装MS Word的服务器上使用它.我一直在挖掘API并且没有找到任何明显的东西,所以我倾向于认为没有办法.是这样的吗?
编辑:德文的答案基本上就是我所理解的情况.我应该提到我正在使用.NET框架.所以我想知道是否有一个.NET库可以处理一个docx文件进行打印?我看到当DefaultPrinterQueue在一个LocalPrintServer(在System.Printing命名空间中)添加一个作业时,它可以处理一个XPS文档.所以也许这就是要走的路.
我需要使用Open XML Format SDK 2.0从模板创建PowerPoint 2007演示文稿.模板必须由客户提供,并用于单独的布局样式(字体,背景颜色或图像,......).它需要包含两个预定义的幻灯片:
应用程序现在应该创建模板文件的副本,创建文本和图像幻灯片的多个副本,并用一些内容替换内容占位符.
我已经从Microsoft找到了一些代码片段来编辑幻灯片的标题,删除幻灯片或替换幻灯片上的图像.但我没有找到如何创建现有幻灯片的副本.也许有人可以帮我这个.
我使用Microsoft的DocumentFormat.OpenXML库生成OpenXml.我想弄清楚如何将这个文档放到我的剪贴板中,这样我就可以将我的数据粘贴到Excel中(好像它是从Excel复制的).当我从Excel中复制时,我能够看到来自Excel的OpenXml格式化数据.我需要反过来,复制出WPF应用程序,并使用高级Excel格式粘贴到Excel(因此需要OpenXML).
这是我到目前为止的一小部分:
MemoryStream documentStream = new MemoryStream();
SpreadsheetDocument spreadsheet = SpreadsheetDocument.Create(documentStream, SpreadsheetDocumentType.Workbook, true);
// create the workbook
spreadsheet.AddWorkbookPart();
Stream workbookStream = spreadsheet.WorkbookPart.GetStream();
spreadsheet.WorkbookPart.Workbook = new Workbook(); // create the worksheet
spreadsheet.WorkbookPart.AddNewPart<WorksheetPart>();
spreadsheet.WorkbookPart.WorksheetParts.First().Worksheet = new Worksheet();
...
const string SPREADSHEET_FORMAT = "XML Spreadsheet";
Clipboard.SetData(SPREADSHEET_FORMAT, clipboardData);
Run Code Online (Sandbox Code Playgroud) 我有一个Delphi 2007 DBGrid,我想让用户以更新的Excel格式(OOXML)保存,但我的标准是用户不需要安装Excel.有人知道任何组件已经这样做了吗?是的,我已经搜索过了,但我还没有找到任何东西.
当我尝试打开由以下代码创建的文档时,我收到模糊的"excel发现不可读的内容"错误:
public void GenerateWorkbookFromDB()
{
//Make a copy of the template file
File.Copy(HttpContext.Current.Server.MapPath("ReportTemplate/test.xlsx"), HttpContext.Current.Server.MapPath("Reports/test.xlsx"), true);
//Open up the copied template workbook
using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(HttpContext.Current.Server.MapPath("Reports/test.xlsx"), true))
{
WorkbookPart workbookPart = myWorkbook.WorkbookPart;
WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
string origninalSheetId = workbookPart.GetIdOfPart(worksheetPart);
WorksheetPart replacementPart = workbookPart.AddNewPart<WorksheetPart>();
string replacementPartId = workbookPart.GetIdOfPart(replacementPart);
OpenXmlReader reader = OpenXmlReader.Create(worksheetPart);
OpenXmlWriter writer = OpenXmlWriter.Create(replacementPart);
Row r = new Row();
Cell c = new Cell();
CellValue v = new CellValue();
v.Text = "test";
c.Append(v);
while (reader.Read())
{
if (reader.ElementType …Run Code Online (Sandbox Code Playgroud) 我已经对此做了一些研究,但大多数解决方案都是针对MVC ..我只是使用Asp.net 3.5如何在按钮点击时实现这一点..我应该包括任何库或其他任何东西..请帮助..
对于Paragraph对象,如何使用Open XML SDK 2.0 for Microsoft Office确定它所在的页面?
我正在使用OPENXML SDK 2.0来传输电子表格文件.源数据来自数据表,并使用openxml将其写入Spreadsheet.如果数据表的列数据中有一个具有"Treshold%"(此文本上面有选项卡空间)并且同样写入excel但是在excel单元格中将其写入"Treshold%"并删除标签空间.
我使用的代码如下.使用workSheetWriter.PasteText和workSheetWriter.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);
}
Run Code Online (Sandbox Code Playgroud)
请帮忙.如何将开头的标签空间(Treshold%)中的值写入excel单元格中的格式相同?
我使用功能区创建了一个Word加载项项目,当我想保存文档时,在使用OpenXml进行多次修改后,会引发异常.
Dim MainXMLDoc As New XmlDocument()
Using WordDoc As WordprocessingDocument = WordprocessingDocument.Open(DocPath, True)
Dim mainPart As MainDocumentPart = WordDoc.MainDocumentPart
If Not mainPart Is Nothing Then
MainXMLDoc.Load(mainPart.GetStream())
EXmlDocument.XMLDoc = Nothing
EXmlDocument.XMLDoc = MainXMLDoc
EXmlDocument.GetWordDocIds()
'..............
end if
'........
Dim stream As IO.Stream
stream = mainPart.GetStream(FileMode.Create, FileAccess.Write)
MainXMLDoc.Save(stream) '-----> exception
Run Code Online (Sandbox Code Playgroud)
并且异常消息是:
Interception de System.IO.IsolatedStorage.IsolatedStorageException
Message =无法确定域的标识.Source = mscorlib StackTrace:System.IO.IsolatedStorage.IsolatedStorage._GetAccountingInfo(证据证据,Type evidenceType,IsolatedStorageScope fAssmDomApp,Object&oNormalized)在System.IO.IsolatedStorage.IsolatedStorage.GetAccountingInfo(证据证据,Type evidenceType,IsolatedStorageScope fAssmDomApp,String&typeName) ,字符串&实例名)在System.IO.IsolatedStorage.IsolatedStorage._InitStore(IsolatedStorageScope范围,循证domainEv,类型domainEvidenceType,证据assemEv,类型assemblyEvidenceType,证据appEv,类型appEvidenceType)在System.IO.IsolatedStorage.IsolatedStorage.InitStore(IsolatedStorageScope范围,在MS.Internal.IO.Packaging的MS.Internal.IO.Packaging.PackagingUtilities.ReliableIsolatedStorageFileFolder.GetCurrentStore()上的System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(IsolatedStorageScope范围,类型domainEvidenceType,类型assemblyEvidenceType)中键入domainEvidenceType,Type assemblyEvidenceType) .PackagingUtilities.ReliableIs olatedStorageFileFolder..ctor()位于MS.Internal.IO.Package.Packaging.PackagingUtilities.GetDefaultIsolatedStorageFile(),位于MS.Internal.IO.Packaging.SparseMemoryStream的MS.Internal.IO.Packaging.PackagingUtilities.CreateUserScopedIsolatedStorageFileStreamWithRandomName(Int32 retryCount,String&fileName). SwitchModeIfNecessary()在MS.Internal.IO.Packaging.SparseMemoryStream.Write(字节[]缓冲液,的Int32偏移的Int32计数)在MS.Internal.IO.Packaging.CompressEmulationStream.Write(字节[]缓冲液,的Int32偏移的Int32计数)在MS.Internal.IO.Packaging.CompressStream.Write(字节[]缓冲液,的Int32偏移的Int32计数)在MS.Internal.IO.Zip.ProgressiveCrcCalculatingStream.Write(字节[]缓冲液,的Int32偏移的Int32计数)在MS.Internal.IO.Zip.ZipIOModeEnforcingStream.Write(字节[]缓冲液,的Int32偏移的Int32计数)在System.IO.StreamWriter.Flush(布尔flushStream,布尔flushEncoder)在System.IO.StreamWriter.Write(char值) System.Xml.Xm上的System.Xml.XmlTextWriter.Indent(Boolean beforeEndElement)lTextWriter.AutoComplete(令牌标记)在System.Xml.XmlTextWriter.WriteStartElement(字符串前缀,字符串的localName,串NS)在System.Xml.XmlDOMTextWriter.WriteStartElement(字符串前缀,字符串的localName,串NS)在System.Xml.XmlElement. WriteStartElement(XmlWriter的重量)在System.Xml.XmlElement.WriteElementTo(XmlWriter的作家,XmlElement的E)在System.Xml.XmlElement.WriteTo(XmlWriter的重量)在System.Xml.XmlDocument.WriteContentTo(XmlWriter的XW)在System.Xml.XmlDocument System.Xml.XmlDocument.Save(Stream outStream)中的.WriteTo(XmlWriter w)InnerException:
文档大小大于1 MB时出现此问题.经过多次搜索后,"保存"操作是通过隔离存储进行的,解决方案是:
但对于这个项目,我不能使用ClickOnce,我无法修改注册表.
所以我对源代码进行了更改,以创建一个新域. …
您好我使用以下方法来应用自动筛选:
public static void ApplyAutofilter(string fileName, string sheetName, string reference)
{
using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, true))
{
IEnumerable<Sheet> sheets = document.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>().Where(s => s.Name == sheetName);
var arrSheets = sheets as Sheet[] ?? sheets.ToArray();
string relationshipId = arrSheets.First().Id.Value;
var worksheetPart = (WorksheetPart)document.WorkbookPart.GetPartById(relationshipId);
var autoFilter = new AutoFilter() { Reference = reference };
worksheetPart.Worksheet.Append(autoFilter);
worksheetPart.Worksheet.Save();
}
}
Run Code Online (Sandbox Code Playgroud)
我有这个简单的Excel表格:

问题在于我将此方法称为:
ApplyAutofilter(@".\Test.xlsx", "Foo", "A0:A200");
Run Code Online (Sandbox Code Playgroud)
要么
ApplyAutofilter(@".\Test.xlsx", "Foo", "A1:A200");
Run Code Online (Sandbox Code Playgroud)
在我尝试打开之后,未应用过滤器并且文件已损坏:

问题:有没有想过如何将这个自动加载器应用到excel表而不会破坏它?