我正在使用Visual Studio 2010(VB.Net)和Open XML SDK 2.0。如何将公式插入到Excel 2010工作表中?当我这样做时,我也希望将单元格的CellValue属性设置为DBNull或EmptyString,以强制Excel在用户打开工作区时重新计算单元格。使用Open XML如何将公式插入到Excel 2010工作表中?
回答
刚刚离开的CellValue为空,实例化一个新CellFormula像这样:
Cell cell = new Cell()
{
CellReference = "A3",
DataType = new EnumValue<CellValues>(CellValues.Number),
CellFormula = "SUM(A1:A2)"
};
文档在Excel
这个来自附帮助文档打开时,细胞值来计算到用于Microsoft Office帮助文件的Open XML SDK 2.0,并对添加公式进行了一些修改。
Main()
找到与一个片一个空白Excel文档并添加SUM()
式到小区A3
。
Sub Main()
Dim outputFilePath = "C:\Book1.xlsx"
Dim doc As SpreadsheetDocument = SpreadsheetDocument.Open(outputFilePath, True)
Dim workbookPart As WorkbookPart = doc.WorkbookPart
Dim worksheetPart As WorksheetPart = workbookPart.WorksheetParts.First()
InsertCellInWorksheet("A", 3, worksheetPart)
End Sub
' Given a column name, a row index, and a WorksheetPart, inserts a cell into the worksheet.
' If the cell already exists, return it.
Private Function InsertCellInWorksheet(ByVal columnName As String, ByVal rowIndex As UInteger, ByVal worksheetPart As WorksheetPart) As Cell
Dim worksheet As Worksheet = worksheetPart.Worksheet
Dim sheetData As SheetData = worksheet.GetFirstChild(Of SheetData)()
Dim cellReference As String = (columnName + rowIndex.ToString())
' If the worksheet does not contain a row with the specified row index, insert one.
Dim row As Row
If (sheetData.Elements(Of Row).Where(Function(r) r.RowIndex.Value = rowIndex).Count() <> 0) Then
row = sheetData.Elements(Of Row).Where(Function(r) r.RowIndex.Value = rowIndex).First()
Else
row = New Row()
row.RowIndex = rowIndex
sheetData.Append(row)
End If
' If there is not a cell with the specified column name, insert one.
If (row.Elements(Of Cell).Where(Function(c) c.CellReference.Value = columnName + rowIndex.ToString()).Count() > 0) Then
Return row.Elements(Of Cell).Where(Function(c) c.CellReference.Value = cellReference).First()
Else
' Cells must be in sequential order according to CellReference. Determine where to insert the new cell.
Dim refCell As Cell = Nothing
For Each cell As Cell In row.Elements(Of Cell)()
If (String.Compare(cell.CellReference.Value, cellReference, True) > 0) Then
refCell = cell
Exit For
End If
Next
Dim newCell As Cell = New Cell
newCell.CellReference = cellReference
newCell.CellFormula = New CellFormula("SUM(A1:A2)")
row.InsertBefore(newCell, refCell)
worksheet.Save()
Return newCell
End If
End Function
请注意,此方法假定您在公式中引用的每个单元格都具有正确标记的引用。
我得到此代码的构建错误。 CellValues。[Formula]和newCell.Formula不包含公式方法/ Props。你在使用OpenXML2.0吗? – eschneider 2012-07-25 16:24:11
我正在使用版本:2.0.5022.0 – eschneider 2012-07-25 16:26:27
@eschneider更新了数据类型和公式,请立即尝试。 – 2012-07-25 17:00:59
您可以设置模板Excel公式和编写代码来重新计算它们:
spreadSheet.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = True spreadSheet.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = True
它不起作用。 – AjayR 2013-10-08 02:14:58
我在excel单元格中编写我的所有公式,然后使用此代码并运行。 – 2013-11-25 05:54:08
- 1. 如何将日期插入到Open XML工作表?
- 2. 如何以编程方式将XML插入到Excel工作表中?
- 3. 如何使用PowerShell插入Excel公式?
- 4. C#:Excel工作表到数据透视表使用Open XML?
- 5. 如何将变量工作表名称插入多个Excel公式中?
- 6. Open XML SDK 2.0可以按名称访问Excel 2010工作表
- 7. 使用Sahi将数据写入Excel工作表Open Source
- 8. 如何插入(绑定)DataTable到Excel工作簿(VS Excel 2010工作簿项目)
- 9. 使用VBA将数据表格Excel插入到Access 2010中
- 10. 如何使用POI API从Excel工作表中删除公式?
- 11. 使用vba Excel插入公式
- 12. Excel工作表公式
- 13. Excel VBA:如何将公式插入到单元格区域?
- 14. 使用Open XML在Excel中插入指定单元格
- 15. 使用Open Xml SDK和LINQ在Excel中插入文本
- 16. excel vba - 使用变量插入公式
- 17. 如何将用户表单嵌入到Excel工作表中?
- 18. 使用xml映射和Open XML将Excel表导出为xml
- 19. 在Excel中使用VBA插入公式不起作用
- 20. 使用Vb.Net Com插件将多行插入到Excel工作表中
- 21. 使用LINQ和Open XML(Excel)
- 22. Excel 2010:在公式中输入撇号?
- 23. 如何在excel中使用vba插入公式
- 24. 将Long Excel工作表公式转换为VBA公式
- 25. 使用OleDbConnection将行插入现有的Excel工作表中
- 26. 如何使用Visual Basic将数据插入到Open Office Base?
- 27. 使用Excel将工作表保存为CSV公式完好
- 28. 如何使用Open XML刷新Excel 2010的数据透视表高速缓存
- 29. 插入从另一个Excel工作表中的Excel工作表
- 30. 如何使用VBA将Microsoft Word公式导入Microsoft Excel?
我们怎样才能做到不打开Excel。 – AjayR 2013-10-08 02:14:08