C# 使用EPPlus读取Excel文件时,如何从对象访问单个数据?
我试图从c#中的excel文件中读取一行,并使用EPPLUS将其存储在对象中 现在,当我打印对象的内容时,它将行的所有内容显示为单个字符串 如何限制对单个单元格内容的访问?i、 例如,单个单元格内容,以便我可以根据需要使用这些特定字段C# 使用EPPlus读取Excel文件时,如何从对象访问单个数据?,c#,excel,object,objectdatasource,epplus,C#,Excel,Object,Objectdatasource,Epplus,我试图从c#中的excel文件中读取一行,并使用EPPLUS将其存储在对象中 现在,当我打印对象的内容时,它将行的所有内容显示为单个字符串 如何限制对单个单元格内容的访问?i、 例如,单个单元格内容,以便我可以根据需要使用这些特定字段 var existingFile = new FileInfo("D:\\Fields.xlsx"); using (var package = new ExcelPackage(existingFile)) { ExcelWorkbook workB
var existingFile = new FileInfo("D:\\Fields.xlsx");
using (var package = new ExcelPackage(existingFile))
{
ExcelWorkbook workBook = package.Workbook;
if (workBook != null)
{
if (workBook.Worksheets.Count > 0)
{
ExcelWorksheet currentWorksheet = workBook.Worksheets.First();
var lastrow = currentWorksheet.Dimension.End.Row;
var lastcol = currentWorksheet.Dimension.End.Column;
for (int i = 1; i <= lastrow; i++)
{
for (int j = 1; j <= lastcol; j++)
{
object asd = new object();
asd = currentWorksheet.Cells[i, j].Value;
Console.WriteLine(asd);
}
}
}
}
}
var existingFile=new FileInfo(“D:\\Fields.xlsx”);
使用(var package=new ExcelPackage(existingFile))
{
Excel工作簿=package.工作簿;
如果(工作簿!=null)
{
如果(workBook.Worksheets.Count>0)
{
ExcelWorksheet currentWorksheet=workBook.Worksheets.First();
var lastrow=currentWorksheet.Dimension.End.Row;
var lastcol=currentWorksheet.Dimension.End.Column;
对于(int i=1;i您的代码应该可以正常工作。如果您看到excel文件的整行打印为单个字符串,那么我猜是excel文件本身的内容有问题,在这种情况下,您必须以某种方式解析字符串。请将屏幕截图或excel文件本身发布到某个在线位置,以便我们我可以看看
同时,请检查以下代码,该代码首先创建自己的excel文件,然后使用您的代码重新打开并保存:
public void ConsoleWriteTest()
{
//Create some data
var existingFile = new FileInfo(@"c:\temp\temp.xlsx");
if (existingFile.Exists)
existingFile.Delete();
using (var pck = new ExcelPackage(existingFile))
{
var workbook = pck.Workbook;
var worksheet = workbook.Worksheets.Add("newsheet");
#region Data
//The data
worksheet.Cells["A1"].Value = "Col1";
worksheet.Cells["A2"].Value = "sdf";
worksheet.Cells["A3"].Value = "ghgh";
worksheet.Cells["A4"].Value = "sdf";
worksheet.Cells["A5"].Value = "wer";
worksheet.Cells["B1"].Value = "Col2";
worksheet.Cells["B2"].Value = "Group B";
worksheet.Cells["B3"].Value = "Group A";
worksheet.Cells["B4"].Value = "Group C";
worksheet.Cells["B5"].Value = "Group A";
worksheet.Cells["C1"].Value = "Col3";
worksheet.Cells["C2"].Value = 634.5;
worksheet.Cells["C3"].Value = 274.5;
worksheet.Cells["C4"].Value = 453.5;
worksheet.Cells["C5"].Value = 634.5;
worksheet.Cells["D1"].Value = "Col4";
worksheet.Cells["D2"].Value = 996440;
worksheet.Cells["D3"].Value = 185780;
worksheet.Cells["D4"].Value = 686468;
worksheet.Cells["D5"].Value = 996440;
#endregion
pck.Save();
}
//Reopen the file
using (var package = new ExcelPackage(existingFile))
{
ExcelWorkbook workBook = package.Workbook;
if (workBook != null)
{
if (workBook.Worksheets.Count > 0)
{
ExcelWorksheet currentWorksheet = workBook.Worksheets.First();
var lastrow = currentWorksheet.Dimension.End.Row;
var lastcol = currentWorksheet.Dimension.End.Column;
for (int i = 1; i <= lastrow; i++)
{
for (int j = 1; j <= lastcol; j++)
{
object asd = new object();
asd = currentWorksheet.Cells[i, j].Value;
Console.WriteLine(asd);
}
}
}
}
}
}
public void控制台writetest()
{
//创建一些数据
var existingFile=new FileInfo(@“c:\temp\temp.xlsx”);
if(existingFile.Exists)
existingFile.Delete();
使用(var pck=新的ExcelPackage(现有文件))
{
var工作簿=pck.工作簿;
var工作表=工作簿。工作表。添加(“新闻表”);
#区域数据
//数据
工作表。单元格[“A1”]。Value=“Col1”;
工作表。单元格[“A2”]。Value=“sdf”;
工作表。单元格[“A3”]。Value=“GHGHGH”;
工作表。单元格[“A4”]。Value=“sdf”;
工作表。单元格[“A5”]。Value=“wer”;
工作表。单元格[“B1”]。Value=“Col2”;
工作表。单元格[“B2”]。Value=“B组”;
工作表。单元格[“B3”]。Value=“A组”;
工作表。单元格[“B4”]。Value=“C组”;
工作表。单元格[“B5”]。Value=“A组”;
工作表。单元格[“C1”]。Value=“Col3”;
工作表。单元格[“C2”]。值=634.5;
工作表。单元格[“C3”]。值=274.5;
工作表。单元格[“C4”]。值=453.5;
工作表。单元格[“C5”]。值=634.5;
工作表。单元格[“D1”]。Value=“Col4”;
工作表。单元格[“D2”]。值=996440;
工作表。单元格[“D3”]。值=185780;
工作表。单元格[“D4”]。值=686468;
工作表。单元格[“D5”]。值=996440;
#端区
pck.Save();
}
//重新打开文件
使用(var package=new ExcelPackage(existingFile))
{
Excel工作簿=package.工作簿;
如果(工作簿!=null)
{
如果(workBook.Worksheets.Count>0)
{
ExcelWorksheet currentWorksheet=workBook.Worksheets.First();
var lastrow=currentWorksheet.Dimension.End.Row;
var lastcol=currentWorksheet.Dimension.End.Column;
对于(int i=1;我没有使用该库的任何经验,但也许这个答案可以帮助你我觉得它与库无关。我可以访问excel文件,我也可以一次读取所有数据,但我希望能够访问存储在e对象。希望我讲得有道理。如果我把它弄复杂了,很抱歉。谢谢@Ernie对回答感兴趣,但我不想找这个。你注意到我们正在“asd”中存储所有excel数据吗对象?现在,我只想访问该对象中的几个字段。这些字段可能是单个单元格的内容或特定行的数据。希望我讲得通。@Jashwanth,“最后将所有excel数据存储在“asd”对象中”-根据您发布的代码,这不是您正在做的。在您的代码中,您通过指定行(i)或列(j)逐单元格循环也不是作为集合。但听起来你想将整行作为集合,然后对其进行操作?如果是这样,你必须进行一些转换。请参阅我上面粘贴的其他代码了解我的意思。同样,发布一个示例excel文件会有所帮助。
//Get entire rows or columns as collection and then print by casting
using (var package = new ExcelPackage(existingFile))
{
ExcelWorkbook workBook = package.Workbook;
if (workBook != null)
{
if (workBook.Worksheets.Count <= 0)
return;
ExcelWorksheet currentWorksheet = workBook.Worksheets.First();
var lastrow = currentWorksheet.Dimension.End.Row;
var lastcol = currentWorksheet.Dimension.End.Column;
//get the row of column headers which are strings
var asdrange = currentWorksheet.Cells[1, 1, 1, lastcol];
Console.WriteLine("As cell objects");
foreach (var cell in asdrange)
Console.WriteLine(cell.Value);
object asd = new object();
asd = currentWorksheet.Cells[1, 1, 1, lastcol].Value;
object[,] cellObjects = (object[,])asd;
List<string> stringList = cellObjects.Cast<string>().ToList();
Console.WriteLine(Environment.NewLine + "As casted to a List");
Console.WriteLine(stringList[0]);
Console.WriteLine(stringList[1]);
Console.WriteLine(stringList[2]);
Console.WriteLine(stringList[3]);
//get the second row which is a mix of strings and double
asdrange = currentWorksheet.Cells[2, 1, 2, lastcol];
Console.WriteLine(Environment.NewLine + "As cell objects");
foreach (var cell in asdrange)
Console.WriteLine(cell.Value);
asd = currentWorksheet.Cells[2, 1, 2, lastcol].Value;
cellObjects = (object[,])asd;
List<object> objectList = cellObjects.Cast<object>().ToList();
Console.WriteLine(Environment.NewLine + "As casted to a List");
Console.WriteLine(objectList[0]);
Console.WriteLine(objectList[1]);
Console.WriteLine(objectList[2]);
Console.WriteLine(objectList[3]);
//Get Col3 which are doubles
asdrange = currentWorksheet.Cells[2, 3, lastrow, 3];
Console.WriteLine(Environment.NewLine + "As cell objects");
foreach (var cell in asdrange)
Console.WriteLine(cell.Value);
asd = currentWorksheet.Cells[2, 3, lastrow, 3].Value;
cellObjects = (object[,])asd;
List<double> doubleList = cellObjects.Cast<double>().ToList();
Console.WriteLine(Environment.NewLine + "As casted to a List");
Console.WriteLine(doubleList[0]);
Console.WriteLine(doubleList[1]);
Console.WriteLine(doubleList[2]);
Console.WriteLine(doubleList[3]);
Console.WriteLine(doubleList[4]);
Console.WriteLine(doubleList[5]);
Console.WriteLine(doubleList[6]);
Console.WriteLine(doubleList[7]);
Console.WriteLine(doubleList[8]);
}
}