ASP.NET 如何获取 Excel 中工作表的名称。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET 如何获取 Excel 中工作表的名称。相关的知识,希望对你有一定的参考价值。

用FileUpload获取用户上传的Excel 文件的名称。Excel 文件中有三个Sheet。名称用户已经改过。现在用一个Button事件获取用户上传的Excel 文件中的三个Sheet的名称。分别给Label1、Label2、Label3。望附完整的代码。谢谢!

ASP.NET 获取 Excel 中工作表的名称方法如下:
string date = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString();
path = UserCompany + UserName + YearList.SelectedValue.ToString() + "年" + MonthList.SelectedValue.ToString() + "月" + date + ".xls";
FileUpload1.PostedFile.SaveAs(path);
//将文件复制到服务器指定目录中
//调用获取excel为dataset的函数
DataSet data = new DataSet();
for (int i = 0; i < tablenum; i++)

tablename[i] = tables[i].TableName.ToString();
//获取表格名 称,excel表格中sheet的名称

data = GetExcelData.GetDataSetFromExcel(path);
int tablenum;
tablenum = data.Tables.Count;
//只充许一个excel中有一个sheet页,通过选择页面中表格类型确定,如需要一个excel中有多个sheet页面,则可去掉下面的判断
if (tablenum>1)

Response.Write("<Script Language=javascript>alert(\'excel表格中只充许有一个sheet页面!\');</Script>");
return;

DataTable[] tables = new DataTable[tablenum];
for (int i = 0; i < tablenum; i++)

tablename[i] = tables[i].TableName.ToString();
//获取表格名称,excel表格中sheet的名称
参考技术A 1、在EXCEL中引用当前工作表名
如果你的工作薄已经保存,下面公式可以得到单元格所在工作表名:
=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))
2、计算一个工作薄中有多少个工作表
方法一:
点"工具"->"宏"->"VB编辑器"->"插入"->"模块",输入如下内容:
Sub sheetcount()
Dim num As Integer
num = ThisWorkbook.Sheets.Count
Sheets(1).Select
Cells(1, 1) = num
End Sub
运行该宏,在第一个(排在最左边的)工作表的A1单元格中的数字就是sheet的个数。

方法二:
按Ctrl+F3(或者点"插入"->"名称"->"定义"),打开"定义名称"对话框
定义一个X
"引用位置"输入:
=get.workbook(4)
点"确定"。
然后你在任意单元格输入=X
出来的结果就是sheet的个数。
3、在一个工作薄中快速整理出一个目录工作表即可在目录工作表上直接链接上其中一个:
1、用宏3.0取出各工作表的名称,方法:
Ctrl+F3出现自定义名称对话框,取名为X,在“引用位置”框中输入:
=MID(GET.WORKBOOK(1),FIND("]",GET.WORKBOOK(1))+1,100)
确定

2、用HYPERLINK函数批量插入连接,方法:
在目录工作表(一般为第一个sheet)的A2单元格输入公式:
=HYPERLINK("#'"&INDEX(X,ROW())&"'!A1",INDEX(X,ROW()))
将公式向下填充,直到出错为止,目录就生成了。
参考技术B openFileDialog1.ShowDialog();

oledbconn1.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;data source="+openFileDialog1.FileName+";Extended Properties=Excel 8.0;Persist Security Info=False";

oledbconn1.Open();

DataTable dt = oledbconn1.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new objec] null, null, null, "TABLE");

foreach (DataRow dr in dt.Rows)


comboBox1.Items.Add((String)dr["TABLE_NAME"]);
本回答被提问者和网友采纳
参考技术C string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileUrl + ";Extended Properties='Excel 8.0;IMEX=1;HDR=" + ynHDR + "'";

System.Data.OleDb.OleDbConnection Conn2 = new System.Data.OleDb.OleDbConnection(connStr);
Conn2.Open();
String sqlGetColumnName = "SELECT * FROM [" + sheet + "]";
System.Data.OleDb.OleDbDataAdapter odasheet = new System.Data.OleDb.OleDbDataAdapter(sqlGetColumnName, Conn2);
DataSet dsSheet = new DataSet();
odasheet.Fill(dsSheet, dataSection);
Conn2.Dispose();
Conn2.Close();
return dsSheet;

如何使用过滤的数据框更新现有 Excel 工作表的一部分?

【中文标题】如何使用过滤的数据框更新现有 Excel 工作表的一部分?【英文标题】:how to update a portion of existing excel sheet with filtered dataframe? 【发布时间】:2019-05-31 12:19:49 【问题描述】:

我有一个包含几张工作表的 Excel 工作簿。我需要从其中一张表中读取一部分,获取过滤后的数据帧,然后将过滤后的数据帧中的单个值写入同一张表中的特定单元格。最好的方法是什么,最好不打开 Excel 工作簿?我需要在 linux 上运行它,所以不能使用 xlwings。我不想写整个工作表,而只是在其中选择一个单元格/偏移量。我尝试将以下内容写入现有工作表,但似乎对我不起作用(所需单元格没有更新):

with pd.ExcelWriter('test.xlsx', engine='openpyxl') as writer:
    writer.book = load_workbook('test.xlsx')
    df_filtered.to_excel(writer, 'Sheet_Name', columns=['CS'], startrow=638, startcol=96)

任何提示都会有所帮助。谢谢。

【问题讨论】:

【参考方案1】:

如果你只是写一个单元格,下面就足够了。

import pandas as pd
import openpyxl

df = pd.DataFrame(data=[1,2,3], columns=['col'])
filtered_dataframe = df[df.col == 1].values[0][0]

filename = 'test.xlsx'
wb = openpyxl.load_workbook(filename)
wb['Sheet1'].cell(column=1, row=2, value=filtered_dataframe)
wb.save(filename)

我相信你的问题是你从来没有调用过 writer 的 save 方法。

【讨论】:

成功了,谢谢!我遇到的唯一其他问题是在执行 wb.save(filename) 之前需要关闭 Excel 工作簿 - 这是预期的行为吗?是否可以在打开 excel 时进行更新? openpyxl 通过直接编辑磁盘上的文件来工作,因此您加载到 ram 中的工作簿不会受到影响。如果您想在打开 excel 的情况下编辑电子表格 - 查看 xlwings - 它直接使用 excel。 我用过 xlwings,它确实可以在 excel open 上工作,但是,xlwings 有 Windows 依赖项,除非我遗漏了什么,否则不能在 linux 上工作。 没错,我不相信有明显的方法可以在 linux 上更新打开的电子表格。

以上是关于ASP.NET 如何获取 Excel 中工作表的名称。的主要内容,如果未能解决你的问题,请参考以下文章

如何将包含数百张工作表的 excel 文件导入数据库以在 C# 项目中使用?

怎样取消EXCEL中的宏保护

如何在asp.net中实现将sqlserver数据库表的数据导入到excel中,希望在代码中生成Excel表并带有中文表头?

如何使用过滤的数据框更新现有 Excel 工作表的一部分?

如何使用python检测excel中的自动过滤器?

求asp.net导出excel表的高效方法