在C#中使用epplus使用工作表名称而不是第一个工作表 [英] Use worksheet name instead of first sheet using epplus in C#
本文介绍了在C#中使用epplus使用工作表名称而不是第一个工作表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试创建一个函数,该函数将读取特定Excel工作表中的数据,然后将这些数据上载到数据库中各自的表中。我在C#中使用EPPlus。
当前的工作代码是这样的:
I'm trying to create a function that will read the data from specific excel sheets that will then be uploaded into their respective tables in a database. I'm using EPPlus in C# for this.
The current working code is something like this:
public static DataTable GetDataTableFromExcel(string path,bool hasHeader = true)
{
using (var pck = new OfficeOpenXml.ExcelPackage())
{
using (var stream = File.OpenRead(path))
{
pck.Load(stream);
}
var ws = pck.Workbook.Worksheets.First();
DataTable tbl = new DataTable();
foreach (var firstRowCell in ws.Cells[1, 1, 1,
ws.Dimension.End.Column])
{
tbl.Columns.Add(hasHeader ? firstRowCell.Text :
string.Format("Column {0}", firstRowCell.Start.Column));
}
var startRow = hasHeader ? 2 : 1;
for (int rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++)
{
var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
DataRow row = tbl.Rows.Add();
foreach (var cell in wsRow)
{
row[cell.Start.Column - 1] = cell.Text;
}
}
return tbl;
}
我尝试将文件名作为字符串传递给函数但是我收到一条错误,说它需要一个标识符。谁能给我一些关于如何解决这个问题的想法呢?
我尝试过的事情:
I tried passing off the filename as a string into the function but I got an error saying it expected an identifier. Can anyone give me ideas on how to fix this?
What I have tried:
public static DataTable GetDataTableFromExcel(string path, string fileN, bool hasHeader = true)
{
using (var pck = new OfficeOpenXml.ExcelPackage())
{
using (var stream = File.OpenRead(path))
{
pck.Load(stream);
}
//var ws = pck.Workbook.Worksheets.First();
var ws = pck.Workbook.Worksheets.(fileN);
DataTable tbl = new DataTable();
推荐答案
你可以试试像
You can try something like
pck.Workbook.Worksheets["Sheet1"];
我宁愿使用索引检索工作表,
I would rather retrieve the worksheet using index,
string FilePath = @"D:\...\path\sample.xlsx";
FileInfo existingFile = new FileInfo(FilePath);
List<Heading> Headings = new List<Heading>();
using (ExcelPackage package = new ExcelPackage(existingFile))
{
//Get number of sheets,
int iSheetsCount = package.Workbook.Worksheets.Count;
if (iSheetsCount > 0)
{
// Get the sheet by index
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
Console.WriteLine("Worksheet name : " + worksheet.Name);
}
}
这篇关于在C#中使用epplus使用工作表名称而不是第一个工作表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文