Tag: openxml

当我设置pageSetup时,OpenXML破坏了excel文件

我有一个从我的程序DevExpress创build的Excel文件。 我需要在这个文件中添加水平中断页面,但我不能,因为我的DevExpress版本不处理它。 所以我在一个单独的类中使用OpenXML来检索生成的excel文件,以便添加水平中断页面。 DevExpress生成后,我的文件看起来像这样: 所以它有6页。 我想有这个,而不是: 为了在单独的工作表上打印每个选项卡。 所以我使用openXML中的PageSetup来定义我的excel文件的宽度和高度: private void InsertPageBreaks() { //uint columnIndex = 17U; uint rowIndex = 42; SpreadsheetDocument sd = SpreadsheetDocument.Open("c:\\temp\\ExcelExport1.xlsx", true); try { WorkbookPart workbookPart = sd.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.Last(); // Uncomment the following line to insert row page breaks. InsertHorizontalPageBreak(rowIndex, worksheetPart); PageSetup pageSetup = new PageSetup() {FitToHeight = 2, […]

小数分析在不同环境下的差异

晚间, 我正在用一个问题抨击我的头靠在墙上: 我正在从一个size=16和decimal places = 2的Number列中的单元格中加载dBase III .dbf文件中的数字。 用DbfViewer查看时,这些数字显示为: 12345.12 ,其中没有千位分隔符和小数点分隔符. 。 我使用decimal.parse(val)从数据库中的单元格parsing数字。 我做这个号码的东西。 我正在使用ClosedXML库将数字粘贴到具有以下公式的.xlsx Excel文件单元格中: "=R[-1]C * 100/" & val其中val是从dBaseIII数据库文件获得的值。 这是通过以下语句完成的: Dim formula as String = "=R[-1]C * 100/" & project.TotalIncome(i) cell.FormulaR1C1 = formula 。 我正在使用两种编程环境: 使用Visual Studio 2013 Community和Office 2010 Windows 8.1计算机。 使用Visual Studio 2013 Ultimate和Office 2013 Windows 8.1计算机。 我已经确认这两个环境对于Windows和Office都具有相同的Language, Date, Time and […]

如何通过名称设置Excel单元格的值而不是使用EPPlus的坐标?

我可以使用EPPlus设置单元格值: var template = new FileInfo(Server.MapPath("~/App_Data/my_template.xlsx")); var pck = new ExcelPackage(template); var ws = pck.Workbook.Worksheets.First(); ws.Cells[15, 4].Value = 66; ws.Cells["B1"].Value = 55; 我不想通过坐标寻址目标单元,而是使用命名单元/variables“利润”。 ws.Range("profits").Value = 66; 但是,EPPlus不支持ws.Range(…)。 =>是否可以这样做? 我将如何编写提供所需function的扩展方法? 相关文章/问题: a)EPPlus的Doc: http://epplus.codeplex.com b)如何在Excel中使用命名的单元格/variables: https://www.computerhope.com/issues/ch000704.htm 在Excel 2013 VBA中引用命名单元格的正确方法是什么? (我知道我搞砸了) c)用C#创buildExcel文件的库 从C#创buildExcel(.XLS和.XLSX)文件

在C#中使用OpenXML在Excel文档中设置文本居中

我有一个文档,我的asp.net页面正在创build,我需要alignment某些列的文本居中。 在openXML SDK中手动将列置于中间位置之后,我已经打开了文档,但反映的代码无法达到所需的结果。 这是我如何设置这些列的自定义宽度,我想添加到这个函数(方法,whatevs)中心文本的能力: private static Column CreateColumnData(UInt32 StartColumnIndex, UInt32 EndColumnIndex, double ColumnWidth) { Column column; column = new Column(); column.Min = StartColumnIndex; column.Max = EndColumnIndex; column.Width = ColumnWidth; column.CustomWidth = true; //the SDK says to add this next line to center the text but it doesn't work column.Style = (UInt32Value)6U; return column; } 我打开另一种方式,但我认为,解决scheme已经非常简单,我似乎无法得到它。 […]

OpenXML电子表格删除行导致excel不可读的内容错误

我试图清除Excel模板中的行。 之前的代码通过并创build基于模板的工作簿。 该代码生成没有错误的罚款excel文件。 只有在添加这个部分的时候才会遇到问题: Sheet theSheet = workbookPart.Workbook.Descendants<Sheet>() .Where(s => s.Name == task).FirstOrDefault(); if (theSheet != null) { WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(theSheet.Id); SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>(); var rows = sheetData.Elements<Row>().Where(r => r.RowIndex > 1).ToArray(); for (int x = 0; x < rows.Count(); x++) { ((Row)rows[x]).Remove(); } worksheetPart.Worksheet.Save(); } 它成功清除了行。 但是,当我在Excel中打开文件时收到以下错误: Excel在“excel.xlsx”中发现不可读的内容。 你想恢复这个工作簿的内容?… 点击是给出以下详细信息: <repairedRecords summary="Following […]

将JSONstring或数组转换为Excel文件?

如何将数组/ json转换为Excel文件(Office Open XML)? $result = mysql_query($query); $rows = Array(); while($row = mysql_fetch_assoc($result)) { array_push($rows, $row); } echo json_encode(Array( "data" => $rows ));

打印时将行设置为重复 – 打开XML和Excel

我试图得到一个xlsx文件的前4行,在打印时在每个页面的顶部重复。 我正在使用Open XML SDK来完成此操作。 我的文件正在由SSRS执行Web服务生成为文件stream。 然后,我需要修改几个布局和页面设置(页边距,页面大小,缩放等),然后将文件传递给用户,因为我的用户有很小的Excel敏锐度。 我需要调整的所有其他设置工作正常,所以我已经从这个例子中删除了所有的代码。 当尝试使用下面的代码设置重复页面标题时,它会执行没有错误。 但是,当我尝试执行代码后打开文件,我得到一个损坏的文件消息,它不会打开。 任何想法我在这里做错了吗?! 这让我疯狂! using (SpreadsheetDocument xl = SpreadsheetDocument.Open("C:\\" + filename, true)) { WorkbookPart wbp = xl.WorkbookPart; //—————————————– // repeat rows at top when printing //—————————————– DefinedNames dn = new DefinedNames(); wbp.Workbook.Append(dn); wbp.Workbook.Save(); DefinedNames definedNames = wbp.Workbook.Descendants<DefinedNames>().FirstOrDefault(); DefinedName n1 = new DefinedName() { Name = "_xlnm.Print_Titles", LocalSheetId = […]

往返XML – > Excel – > XML

我想在Web应用程序中使用来自服务器端C#的Excel XML Mapfunction。 XML映射使您能够将XML模式与工作簿相关联,并指定哪些单元格映射到模式的哪些部分。 从那里您可以导入XML文件来更新单元格值,并导出包含最新值的XML(即,是否已手动更改)。 您可以在Excel的“开发人员”选项卡上手动执行此操作。 我们已经获得了Aspose Cell的许可证,但是(尽pipe在这个领域有一些最近的工作),它似乎并不完全支持XML地图。 有没有人有这个成功? 我已经使用Excel Interop创build了一个testing,它可以工作(即可以编程方式设置一个XML Map并使用它来导入和导出值)。 这归结于: XmlMap map = workbook.XmlMaps.Add(xmlSchema, Missing.Value); // map cell C3 to the question text var worksheet = (Worksheet)workbook.Worksheets[1]; Range cell = (Range)worksheet.Cells[3, 3]; cell.XPath.Clear(); // just in case cell.XPath.SetValue(map, "/Root/Question/Text", Missing.Value, false); // import the XML to populate the mapped cells map.ImportXml(xmlData, true); […]

保存OpenXML文档时操作共享string表

我正在尝试使用Entity Framework数据创buildExcel 2010工作簿(EF不是问题)。 我或多或less地跟随代码: CodeProject链接 在上面的链接中创build文本单元格的代码将所有文本创build为内联string。 为了遵循最佳实践(至less据我了解OpenXML)我想改变这个使用共享string表,所以我在这里find的代码来帮助。 为此,我从工作簿中获取共享string表,添加我的字符​​串,然后保存表。 我的代码: private static int InsertSharedStringItem(WorkbookPart wbPart, string value) { int index = 0; bool found = false; var stringTablePart = wbPart.GetPartsOfType<SharedStringTablePart>() .FirstOrDefault(); if (stringTablePart == null) { // Create it. stringTablePart = wbPart.AddNewPart<SharedStringTablePart>(); } var stringTable = stringTablePart.SharedStringTable; if (stringTable == null) { stringTable = new SharedStringTable(); […]

在Excel中打开使用SXSSFWorkbook创build的文件:“找不到可读的内容”

有几个相关的问题,但我找不到一个反映我的情况。 我正在用Apache POI使用SXSSFWorkbook和SXSSFSheet对象写出一个Excel“xlsx”文件。 该文件创build没有问题,并在LibreOffice打开罚款,但是,Excel抱怨打开文件时。 Excel在“test-file.xlsx”中发现不可读的内容。 你想恢复工作簿的内容? 如果您信任此工作簿的来源,请单击“是”。 当select“是”时 Excel能够通过修复或删除不可读的内容来打开文件。 已删除的function:从/xl/styles.xml部分格式(样式) 修复logging:来自/xl/worksheets/sheet1.xml部分的单元信息 创build这个工作簿的代码很无聊,我没有设置任何样式或任何有趣的东西。 我创build工作簿和一张表,然后写入数据。 private Workbook createWorkbook(final String sheetName, final String[] headers) { // create a new workbook and sheet final SXSSFWorkbook workbook = new SXSSFWorkbook(500); final SXSSFSheet sheet = (SXSSFSheet) workbook.createSheet(sheetName); // create and fill our header row final Row row = sheet.createRow(0); for (int […]