我想从Excel的列标题中读取数据。 每个excel文件具有相同的标题名称,但标题名称位于不同的行中。 请用c#代码帮助我。 我的代码在下面。
var textfile = Request.Files[0];
string profileimage = Path.GetExtension(textfile.FileName);
string ProfileName = path.GetFileNameWithoutExtension(textfile.FileName);
IExcelDataReader excelReader;
excelReader=ExcelReaderFactory.CreateBinaryReader(textfile.InputStream);
DataSet result = excelReader.AsDataSet();
DataTable dt = result.Tables[0];
int Tcount = dt.Rows.Count;
for (int i = 2; i < dt.Rows.Count; i++)
{}
...
答案 0 :(得分:1)
一种方法是使用Interop。这是随办公室提供的,因此您不需要任何第三方的东西。
using Excel=Microsoft.Office.Interop.Excel;
// Start Excel.exe
MyApp = new Excel.Application();
// Hide the visual application, you can also choose to omit this to show the excel application while your code works on it.
MyApp.Visible = false;
// Open the file
MyBook = MyApp.Workbooks.Open("Some/Excel/File");
// Get the first sheet
MySheet = MyBook.Sheets[1];
// Get some cell value
MyCell= MySheet.Cells[rowIndex,colIndex]
然后,您可以遍历各行以通过行/列索引或字符串比较来查找标题。 最后,您需要使用此命令释放COM对象(此处的顺序很重要),否则Excel.exe将继续运行:
Marshal.ReleaseComObject(MyCell);
Marshal.ReleaseComObject(MySheet);
Marshal.ReleaseComObject(MyBook);
Marshal.ReleaseComObject(MyApp);
只需确保首先阅读文档,因为使用互操作时会遇到一些麻烦,例如释放对象。
答案 1 :(得分:1)
尝试使用OpenXML SDK。在这里您可以找到有关以下内容的更多信息: