c#难以将excel数据读取到数组中(互操作)
本文关键字:数组 互操作 读取 excel 数据 | 更新日期: 2023-09-27 18:11:48
首先我很抱歉我以前问过这个问题,但是由于我在一天中安静的时间发帖,所以我从来没有得到过答案。
我试图从xlsx文档列读取数据到基于表单的程序上的数组列表,这样我就可以调用各种数据来操纵或简单地显示在屏幕上,但不能得到一些代码的工作。我搜索了论坛,发现这是根据海报的作品,但我有问题。我真的被这个问题困住了,因为我从来没有写过任何涉及excel的代码。
它抛出的错误是"Server, Missing &"会话"在当前上下文中不存在。我知道会话不是winforms应用程序的一部分,但不知道该怎么做。
using Microsoft.Office.Interop.Excel;
主代码
string filePath = "SampleData.xlsx";
try
{
Excel.Application appExl;
Excel.Workbook workbook;
Excel.Worksheet NwSheet;
Excel.Range ShtRange;
appExl = new Excel.Application();
workbook = appExl.Workbooks.Open(filePath);
workbook = appExl.Workbooks.Open(Server.MapPath(filePath), Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1);
int Cnum = 0;
int Rnum = 0;
ShtRange = NwSheet.UsedRange;
DataTable dt = new DataTable();
for (int row = 1; row <= ShtRange.Rows.Count; row++)
{
string str = Convert.ToString((ShtRange.Cells[row, 1] as Excel.Range).Value2);
dt.Columns.Add(str);
}
workbook.Close(true);
appExl.Quit();
Session["data"] = dt;
return true;
}
catch (Exception ex)
{
return false;
}
这是否更好地代表了它应该是什么样子?
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
string FilePath = "SampleData.xlsx";
Excel.Application appExl;
Excel.Workbook workbook;
Excel.Worksheet NwSheet;
Excel.Range ShtRange;
appExl = new Excel.Application();
workbook = appExl.Workbooks.Open(FilePath);
NwSheet = (Excel.Worksheet)workbook.Sheets.get_Item(1);
int Cnum = 0;
int Rnum = 0;
ShtRange = NwSheet.UsedRange;
DataTable dt = new DataTable();
for (int row = 1; row <= ShtRange.Rows.Count; row++)
{
string str = Convert.ToString((ShtRange.Cells[row, 1] as Excel.Range).Value2);
dt.Columns.Add(str);
}
workbook.Close(true);
appExl.Quit();
我认为您需要在您的项目中添加以下引用:
System.Web
System.Reflection
您可能还需要在代码中添加以下内容:
Using System.Web
Using System.Reflection
如果这是一个Winforms应用程序,你不需要System。你需要将'Server.MapPath(filePath)'替换为filePath而不是'Session["data"]',你可能会想要使用DataGrid。
也看起来像您试图连续打开文件两次。不知道为什么