Tag: openxml

使用Open Xml写入Excel会在某些列之后出现问题

我正在使用Open XML Format SDK 2.0的C#,试图编写一个Excel报告文件。 我的问题是当我穿过Z列(达到AA)文件损坏,无法用户手动打开。 有任何想法吗? static void Main(string[] args) { PortfolioReport report = new PortfolioReport("Keywords"); report.CreateReport(); } public PortfolioReport(string client) { string newFileName = path + client + ".xlsx"; if (File.Exists(newFileName)) { File.Delete(newFileName); } FileInfo newFile = new FileInfo(newFileName); using (ExcelPackage package = new ExcelPackage(newFile)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Keywords"); package.Save(); } document […]

无法使用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(), […]

在OpenXML和MS Excel中自定义列宽

我正在用OpenXML SDK创build一个XLSX文件,我将自定义列的宽度指定为15 : using (SpreadsheetDocument spreadsheet = SpreadsheetDocument.Create("Book1.xlsx", SpreadsheetDocumentType.Workbook)) { WorkbookPart workbookPart = spreadsheet.AddWorkbookPart(); workbookPart.Workbook = new Workbook(); WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>(); worksheetPart.Worksheet = new Worksheet(); spreadsheet.WorkbookPart.Workbook.AppendChild<Sheets>( new Sheets( new Sheet() { Id = spreadsheet.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sheet1" })); worksheetPart.Worksheet.Append( new Columns( new Column() { Min = 1, Max = 1, Width […]

使用Excel Data Reader(.Net)读取XLSX时意外的空成员

我正在使用http://exceldatareader.codeplex.com/中的Excel数据读取器读取XLSX(Microsoft Excel XML文件),并且遇到数据丢失的问题。 数据库返回的数据集中缺less源Excel电子表格中的数据。 以下是我正在做的更多细节: 在Excel中创build一个简单的testing电子表格,其中包含一个表格,一个标题行和两个数据行。 保存并closuresExcel。 打开文件并将stream传递给CreateOpenXmlReader()方法并取回一个IExcelDataReader。 调用IExcelDataReader上的AsDataSet()方法并获取一个DataSet。 从表0的第1行获取ItemArray。 通过ItemArray循环。 发现有数据丢失(即有System.DBNull成员,我期待System.string成员)。 这里有更多的分析 我debugging了代码,看了一下ExcelDataReader对象模型。 find一个名为“SST”的非公共string数组,它看起来像电子表格一样包含单个线性(一维)数组。 经仔细检查,我发现我所查找的数据也是从这个数组中丢失的。 在这个原始数据中,成员根本不存在。 我的猜测是,由于某种原因,parsing器没有从OOXML中获取数据,并得出结论,单元格是空的。 看着OOXML本身,数据似乎被分割到了sharedStrings.xml和sheet1.xml文件中,所以parsing器可能会把所有这些放在一起。 以二进制格式(Excel 97到2003)保存文件,并在表面上解决这个问题,似乎证实我的怀疑是阅读OOXML格式。 build议? 作为一个停止差距,我将所有的文件转换为二进制格式,但这似乎是一个kludge。 有没有办法让我的OOXML格式的Excel文件正确读取Excel数据读取器?

在读取单元格内容之前,以编程方式将表单的格式设置为文本

我有一个要求阅读Excel表格的内容,写入,并允许编辑和重新导入。 我遇到的问题是,当用户在工作表中的单元格中input数字时,数字在后面考虑了SharedString表上的索引,这是我不需要的效果。 我想要做的是强制工作表中的单元格格式化为文本,然后再继续阅读。 我相信这一点,我相信我的数字将被视为string。 我该如何做到这一点? 我会很感激使用OPENXML库来解决这个问题的例子。

发送Excel文件给使用Chrome和IE但不使用Firefox的用户(获取没有扩展名的文件)

我使用OpenXML库生成和excel文件并将其发送给用户。 它与Chrome和IE工作得很好,但是当我用Firefox试了一下,我遇到了一个问题。 当使用FF保存文件时,我得到一个没有扩展名的文件当使用FF打开文件时,它像一个魅力:( 我正在使用以下function将stream发送给用户。 public static void SendToClient(Byte[] stream, string fileName) { HttpContext.Current.Response.ClearContent(); HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; HttpContext.Current.Response.BinaryWrite(stream); HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".xlsx"); HttpContext.Current.Response.AddHeader("content-length", stream.LongLength.ToString()); HttpContext.Current.Response.End(); } 并像这样调用它: _ExcelReports.SendToClient(excelUtil.ExportToExcel(excelWorkBook), projectName + " Resources"); 即使更奇怪,FF下载对话框识别文件,如截图: 现在完成下载:

如何使用C#和OpenXml访问Word文档中的大纲编号?

我正在尝试将Microsoft Word 2010的大纲转换为Microsoft Excel 2010的电子表格。 我正在使用DocumentFormat.OpenXml.Packing和Documentformat.OpenXml.Wordprocessing 我得到了文档的主体,并使用它来获取所有段落对象的列表: var allParagraphs = new List<Paragraph>(); WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open(wordDocPath.Text, false); Body body = wordprocessingDocument.MainDocumentPart.Document.Body; allParagraphs = body.OfType<Paragraph>().ToList(); 但我似乎无法find存储该段落旁边的大纲编号的任何内容。 除了文档中的段落外,是否还需要抓取其他对象以获取每个段落的大纲数字(如果有的话)? 我在说的大纲编号在下面的截图中出现在这些标题的左边: 不幸的是, ParagraphProperties.OutlineLevel为空,尽pipe我知道它是word文档中大纲的一部分。

在OpenXML中应用数字格式

我试图从头开始使用OpenXML创build一个Excel电子表格,我已经得到了一切工作正常(倾倒实际的单元格的实际值),但现在我试图将数字格式应用到列,我遇到了一个问题。 我有styles.xml如下所示: <?xml version="1.0" encoding="utf-8"?> <x:styleSheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <x:numFmts count="12"> <x:numFmt numFmtId="216" formatCode="#,###" /> <x:numFmt numFmtId="217" formatCode="$#,###" /> <x:numFmt numFmtId="218" formatCode="#0.00" /> <x:numFmt numFmtId="219" formatCode="#,###" /> <x:numFmt numFmtId="220" formatCode="#0.0%" /> <x:numFmt numFmtId="221" formatCode="#,###" /> <x:numFmt numFmtId="222" formatCode="#0.0%" /> <x:numFmt numFmtId="223" formatCode="#0.0%" /> <x:numFmt numFmtId="224" formatCode="#0.0%" /> <x:numFmt numFmtId="225" formatCode="#,###" /> <x:numFmt numFmtId="226" formatCode="#,###" /> <x:numFmt numFmtId="227" […]

Excel“发现不可读的内容”错误打开从C#创build的xlsx

我正在使用OpenXML从C#创build一个Excel文件(xlsx)。 当我创build一个xlsx文件并打开时,它没有错误。 当我尝试在电子邮件上附加该文件并发送时,Excel会返回打开附件文件的消息“发现不可读内容”,然后按是/否继续。 点击是,文件被正确打开。 这是我的代码来附加一个xlsx文件: byte[] bt = functionToCreateXlsxfile(); MailMessage message = new MailMessage(); System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment( new MemoryStream(bt), "myfile.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); attach.ContentDisposition.CreationDate = DateTime.Now; attach.ContentDisposition.ModificationDate = DateTime.Now; attach.ContentDisposition.Inline = false; attach.ContentDisposition.Size = bt.Length; message.Attachments.Add(attach);

从单元格值openxml获取列号

我有一个Excel,其中我想获得例如下面的图像的列号: 在上面的图片中,我知道logging将出现在第一行,但我不确定列号。 在上面的例子中,在“D1”上出现列值:“数量”。 我知道行号如何使用OPEN XMLfind列号(在上面的例子中是“D”),因为列名的数量可能出现在Excel的任何地方,我只需要find相应的数值。