这篇文章主要围绕c#–如何计算OpenXML中每个工作表的行数和c#怎么使用opencv展开,旨在为您提供一份详细的参考资料。我们将全面介绍c#–如何计算OpenXML中每个工作表的行数的优缺点,解答
这篇文章主要围绕c# – 如何计算OpenXML中每个工作表的行数和c#怎么使用opencv展开,旨在为您提供一份详细的参考资料。我们将全面介绍c# – 如何计算OpenXML中每个工作表的行数的优缺点,解答c#怎么使用opencv的相关问题,同时也会为您带来BarTender连接EXCEL中的多个工作表的方法、c# – 如何使用Open XML SDK 2.5设置活动工作表、excel如何将一个工作表根据条件拆分成多个工作表、Excel将多个工作表的函数计算结果转换为数值的实用方法。
本文目录一览:- c# – 如何计算OpenXML中每个工作表的行数(c#怎么使用opencv)
- BarTender连接EXCEL中的多个工作表的方法
- c# – 如何使用Open XML SDK 2.5设置活动工作表
- excel如何将一个工作表根据条件拆分成多个工作表
- Excel将多个工作表的函数计算结果转换为数值
c# – 如何计算OpenXML中每个工作表的行数(c#怎么使用opencv)
worksheet.UsedRange.Rows.Count
获取工作表上包含数据的行数.我使用这些信息来制作进度条.在OpenXML中,我不知道如何获得有关工作表的相同信息.我现在拥有的是这段代码:
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(path,false)) { WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); int row_count = 0,col_count; // here I would like to get the info about the number of rows foreach (Row r in sheetData.Elements<Row>()) { col_count = 0; if (row_count > 10) { foreach (Cell c in r.Elements<Cell>()) { // do some stuff // update progressbar } } row_count++; } }
解决方法
using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open("PATH",true)) { //Get workbookpart WorkbookPart workbookPart = myDoc.WorkbookPart; //then access to the worksheet part IEnumerable<WorksheetPart> worksheetPart = workbookPart.WorksheetParts; foreach (WorksheetPart WSP in worksheetPart) { //find sheet data IEnumerable<SheetData> sheetData = WSP.Worksheet.Elements<SheetData>(); // Iterate through every sheet inside Excel sheet foreach (SheetData SD in sheetData) { IEnumerable<Row> row = SD.Elements<Row>(); // Get the row IEnumerator Console.WriteLine(row.Count()); // Will give you the count of rows } }
编辑Linq现在直截了当.
BarTender连接EXCEL中的多个工作表的方法
BarTender标签设计软件支持多种数据库连接类型,如内部连接,右外部连接,左外部连接,完全外部连接。本文将介绍在BarTender中如何连接EXCEL的多个工作表。这其实还是涉及到BarTender数据库连接类型——内部连接。
1、在BarTender 2016中,单击工具栏中的数据库连接设置按钮。打开数据库连接向导。选择数据库类型EXCEL,单击下一步。
2、单击浏览,选择要连接的EXCEL表格。单击下一步。
3、本文以含有两个工作表的EXCEL为例,双击添加这两个工作表至右侧所需表格栏中,单击下一步。
4、在此对话框中,选择BarTender数据库连接类型——内部连接,选择运算符“相等于”。此设置将实现连接EXCEL的多个工作表。本例中是两个工作表,如需连接更多工作表,可单击按钮进行添加。单击完成即可。
注:关于BarTender其他数据库连接类型的介绍,可参考:BarTender数据库连接类型示例
上述EXCEL多个工作表的连接,前提必须是每个工作表中都有相关联的列,让系统能够自行匹配,否则将无法连接,弹出错误。
本文转载于:http://www.bartender.cc/jiqiao/neibu-lianjie.html
c# – 如何使用Open XML SDK 2.5设置活动工作表
我已经成功地能够在我的excel文件中克隆/复制工作表,但是当我打开excel时,第二张工作表是活动(可见)工作表.我无法找到一个可以做什么的属性…..有没有办法指定哪些工作表是活动的?
我试图通过打开和编辑文件中的第一张纸来强制它,认为它是最后编辑的工作表,但是也没有用.
任何帮助都会很棒. TIA
更新:查看将.xlsx重命名为.zip时创建的workbook.xml我遇到了’activeTab’属性.快速更改我的代码,似乎工作得很好
public void SetFirstSheetInFocus(String xlsxFile) { using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(xlsxFile,true)) { //Get a reference to access the main Workbook part,which contains all references WorkbookPart _workbookPart = spreadSheet.WorkbookPart; if (_workbookPart != null) { WorkbookView _workbookView = spreadSheet.WorkbookPart.Workbook.BookViews.ChildElements.First<WorkbookView>(); if (_workbookView != null) { _workbookView.ActiveTab = 0; // 0 for first or whatever tab you want to use } // Save the workbook. _workbookPart.Workbook.Save(); } } }
解决方法
sheetName
您可以将具有该名称的工作表设置为活动,如下所示:
using (var spreadsheetDoc = SpreadsheetDocument.Open(emptyHIPTemplatePath,true /* isEditable */,new OpenSettings { AutoSave = false })) { var workbookPart = spreadsheetDoc.WorkbookPart; var workBook = spreadsheetDoc.WorkbookPart.Workbook; var sheet = workBook.Descendants<Sheet>().FirstOrDefault(s => s.Name == sheetName); var sheetIndex = workBook.Descendants<Sheet>().ToList().IndexOf(sheet); var workBookView = workBook.Descendants<WorkbookView>().First(); workBookView.ActiveTab = Convert.ToUInt32(sheetIndex); ... workBook.Save(); }
excel如何将一个工作表根据条件拆分成多个工作表
本例介绍在excel中如何将一个工作表根据条件拆分成多个工作表。
注意:很多朋友反映sheets(i).delete这句代码出错,要注意下面第一个步骤,要拆分的数据工作表名称为“数据源”,而不是你新建工作簿时的sheet1这种。手动改成“数据源”即可。
操作步骤:
原始数据表如下(名称为:数据源),需要根据B列人员姓名拆分成每个人一个工作表。
点击【开发工具】-【Visual Basic】或者Alt+F11的快捷键进入VBE编辑界面。
如下图所示插入一个新的模块。
如下图,粘贴下列代码在模块中:
复制内容到剪贴板
Sub CFGZB()
Dim myRange As Variant
Dim myArray
Dim titleRange As Range
Dim title As String
Dim columnNum As Integer
myRange = Application.InputBox(prompt:= 请选择标题行: , Type:=8)
myArray = WorksheetFunction.Transpose(myRange)
Set titleRange = Application.InputBox(prompt:= 请选择拆分的表头,必须是第一行,且为一个单元格,如:“姓名” , Type:=8)
title = titleRange.Value
columnNum = titleRange.Column
Application.ScreenUpdating = False
Application.displayAlerts = False
Dim i&, Myr&, Arr, num&
Dim d, k
For i = Sheets.Count To 1 Step -1
If Sheets(i).Name <> 数据源 Then
Sheets(i).Delete
End If
Next i
Set d = CreateObject( Scripting.Dictionary )
Myr = Worksheets( 数据源 ).UsedRange.Rows.Count
Arr = Worksheets( 数据源 ).Range(Cells(2, columnNum), Cells(Myr, columnNum))
For i = 1 To UBound(Arr)
d(Arr(i, 1)) =
Next
k = d.keys
For i = 0 To UBound(k)
Set conn = CreateObject( adodb.connection )
conn.Open provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source= & ThisWorkbook.FullName
sql = select * from [数据源$] where & title & = ' & k(i) & '
Worksheets.Add after:=Sheets(Sheets.Count)
With ActiveSheet
.Name = k(i)
For num = 1 To UBound(myArray)
.Cells(1, num) = myArray(num, 1)
Next num
.Range( A2 ).copyFromrecordset conn.Execute(sql)
End With
Sheets(1).Select
Sheets(1).Cells.Select
Selection.copy
Worksheets(Sheets.Count).Activate
ActiveSheet.Cells.Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutcopyMode = False
Next i
conn.Close
Set conn = nothing
Application.displayAlerts = True
Application.ScreenUpdating = True
End Sub
5、如下图所示,插入一个控件按钮,并指定宏到刚才插入的模块代码。
6、点击插入的按钮控件,根据提示选择标题行和要拆分的列字段,本例选择“姓名”字段拆分,当然也可以选择C列的“名称”进行拆分,看实际需求。
7、代码运行完毕后在工作簿后面会出现很多工作表,每个工作表都是单独一个人的数据。具体如下图所示:
8、注意:
1)原始数据表要从第一行开始有数据,并且不能有合并单元格。
2)打开工作簿时需要开启宏,否则将无法运行代码。
以上就是excel将一个工作表根据条件拆分成多个工作表图文教程,希望能对大家有所帮助!
Excel将多个工作表的函数计算结果转换为数值
本篇文章给大家带来了关于excel的相关知识,其中主要整理了如何将多个工作表的函数计算结果转换为数值的相关问题,包括了单个工作表的公式转数值、多个工作表的公式转数值,多个工作簿的公式转数值等等内容,下面一起来看一下,希望对大家有帮助。
相关学习推荐:excel教程
如何将多个工作表的函数计算结果转换为数值?今天就给大家集中聊一下这类问题。根据操作范围,这可以分为三种情况。
单个工作表的公式转数值
多个工作表的公式转数值
多个工作簿的公式转数值
1. 区域公式转数值
先来说第一种情况,区域函数计算结果转数值。这种最为常见,操作也比较简单。复制目标区域,右键选择性粘贴为数值即可。
操作动画演示如下:
2. 多工作表公式转数值
如果是将当前工作簿所有工作表的公式转换为数值,需要使用到VBA代码。参考代码如下:
Sub FunctionTransValue_Sheets() Dim sht As Worksheet For Each sht In Worksheets '遍历工作表 sht.UsedRange.Value = sht.UsedRange.Value Next End Sub
第3行至第5行代码遍历工作表,第4行代码将单元格的值修改为值,也就去除了公式内容。
3. 多工作簿公式转数值
指定文件夹下多个工作簿的公式转数值,可以复制运行以下代码:
Sub FunctionTransValue_Workbooks() '全部工作簿 Dim strPath As String, sht As Worksheet Dim strWbName As String, wb As Workbook With Application.FileDialog(msoFileDialogFolderPicker) '获取文件夹路径 If .Show Then strPath = .SelectedItems(1) & "\" Else Exit Sub End With On Error Resume Next With Application .ScreenUpdating = False '取消屏幕刷新 .DisplayAlerts = False '取消警告信息 .EnableEvents = False '取消事件 .Calculation = xlCalculationManual '取消公式重算 .AskToUpdateLinks = False '取消外链询问 End With strWbName = Dir(strPath & "*.xls*") Do While strWbName <> "" 'dir语句遍历excel文件 If strWbName <> ThisWorkbook.Name Then Set wb = Workbooks.Open(strPath & strWbName) '打开工作簿 For Each sht In wb.Worksheets '遍历工作表公式转数值 sht.UsedRange.Value = sht.UsedRange.Value Next wb.Close True '保存关闭工作簿 End If strWbName = Dir() '下一个excel文件 Loop With Application '恢复系统设置 .ScreenUpdating = True .DisplayAlerts = True .EnableEvents = True .Calculation = xlCalculationAutomatic .AskToUpdateLinks = True End With If Err.Number Then MsgBox Err.Description Else MsgBox "转换完成。" End If End Sub
代码解析如下
第4至第6行代码允许用户选择目标文件夹,并获取文件夹的路径。
第8至第14行代码取消一系列系统设置。
第15至第25行代码使用条件循环语句+DIR函数遍历工作簿。第19至第21行代码再遍历工作表,将公式转换为数值。
第26至第32行代码恢复一系列系统设置。
第33行至第37行代码反馈程序运行结果。
相关学习推荐:excel教程
以上就是Excel将多个工作表的函数计算结果转换为数值的详细内容,更多请关注php中文网其它相关文章!
今天的关于c# – 如何计算OpenXML中每个工作表的行数和c#怎么使用opencv的分享已经结束,谢谢您的关注,如果想了解更多关于BarTender连接EXCEL中的多个工作表的方法、c# – 如何使用Open XML SDK 2.5设置活动工作表、excel如何将一个工作表根据条件拆分成多个工作表、Excel将多个工作表的函数计算结果转换为数值的相关知识,请在本站进行查询。
本文标签: