我有一个Excel文件(xls),其中包含第一张工作表中F列的一系列下拉列表。每个下拉列表包含7个以上的选项,这些选项都是字符串。每行都选择了不同的值。下面是使用Microsoft.Office.Interop创建下拉列表的方式:
Application xlApp = new ApplicationClass();
Workbook xlWorkBook = null;
Worksheet xlWorkSheet = null;
object misValue = System.Reflection.Missing.Value;
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
Microsoft.Office.Interop.Excel.Range dropDownRange = xlWorkSheet.get_Range("F" + index, misValue);
Microsoft.Office.Interop.Excel.DropDowns dropDowns = (Microsoft.Office.Interop.Excel.DropDowns)xlWorkSheet.DropDowns(misValue);
Microsoft.Office.Interop.Excel.DropDown dropDown = dropDowns.Add((double)dropDownRange.Left, (double)dropDownRange.Top, (double)dropDownRange.Width, (double)dropDownRange.Height, true);
string[] currency = Config.listofCurrency();
for (int i = 0; i < currency.Length; i++)
{
dropDown.AddItem(currency[i], i + 1);
if (currency[i].ToLower() == defaultCurrency.ToLower())
{
dropDown.set_Selected(i + 1, misValue);
}
}
xlWorkSheet.get_Range("F" + index, misValue).set_Value(Microsoft.Office.Interop.Excel.XlRangeValueDataType.xlRangeValueDefault, dropDown);
现在我尝试使用NPOI读取文件,以从同一文件中获取F列中的单元格值。这是我正在使用的代码:
using (FileStream fileStream = new FileStream("excel.xls", FileMode.Open, FileAccess.Read))
{
HSSFWorkbook hSSFWorkbook = new HSSFWorkbook(fileStream);
ISheet isheet = hSSFWorkbook.GetSheetAt(0);
IRow currentRow;
for (int rowNumber = 1; rowNumber <= isheet.LastRowNum; rowNumber++)
{
currentRow = isheet.GetRow(rowNumber);
ICell cell = currentRow.GetCell(5);
Console.WriteLine(currentRow.GetCell(5).ToString());
}
}
但是我发现单元格类型都是数字,而不是字符串值,并且都设置为值7
,它与下拉列表中的选定值无关。
如何在NPOI中获得正确的细胞值?
使用EPPLus和ClosedXML测试,两者都给我7s。