level 5
提示出错错行:int zds = Convert.ToInt16(wsh1.Cells[4, 4]);//总点数
想把wsh1.cell[4,4]转换成数值写的上行语句,出下了下面提示
提示错误信息:
System.InvalidCastException”类型的未经处理的异常在 mscorlib.dll 中发生
其他信息: 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“System.IConvertible”。此操作失败的原因是对 IID 为“{805E3B62-B5E9-393D-8941-377D8BF4556B}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。
2020年12月03日 06点12分
1
level 5
微软自带的EXCEL真的好多问题,你不如整个NPOI好了
2020年12月04日 03点12分
2
@情感禁区110 我觉得你的代码试图转换的是这个cell,而不是cell里的数值。加上.Text 或者.Value2试试。
2020年12月21日 08点12分
回复 低通滤波器▫ 感谢,确实如你所述
2020年12月31日 06点12分
level 1
先判断if ( wsh1.Cells[4, 4] !=null ) int zds = Convert.ToInt16( wsh1.Cells[4, 4].ToString())
2020年12月29日 03点12分
4
level 3
public class ExeclTools
{
#region 打开保存excel对话框返回文件名
public static string SaveExcelFileDialog()
{
var sfd = new Microsoft.Win32.SaveFileDialog()
{
DefaultExt = "xls",
Filter = "excel files(*.xls)|*.xls|All files(*.*)|*.*",
FilterIndex = 1
};
if (sfd.ShowDialog() != true)
return null;
return sfd.FileName;
}
#endregion
#region 打开excel对话框返回文件名
public static string OpenExcelFileDialog()
{
var ofd = new Microsoft.Win32.OpenFileDialog()
{
DefaultExt = "xls",
Filter = "excel files(*.xls)|*.xls|All files(*.*)|*.*",
FilterIndex = 1
};
if (ofd.ShowDialog() != true)
return null;
return ofd.FileName;
}
#endregion
#region 读excel
public static DataTable ImportExcelFile()
{
DataTable dt = new DataTable();
//打开excel对话框
var filepath = OpenExcelFileDialog();
if (filepath != null)
{
HSSFWorkbook hssfworkbook = null;
#region//初始化信息
try
{
using (FileStream file = new FileStream(filepath, FileMode.Open, FileAccess.Read))
{
hssfworkbook = new HSSFWorkbook(file);
}
}
catch (Exception e)
{
throw e;
}
#endregion
var sheet = hssfworkbook.GetSheetAt(0);
System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)
{
dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());
}
while (rows.MoveNext())
{
HSSFRow row = (HSSFRow)rows.Current;
DataRow dr = dt.NewRow();
for (int i = 0; i < row.LastCellNum; i++)
{
var cell = row.GetCell(i);
if (cell == null)
{
dr[i] = "";
}
else
{
if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric)
{
if (HSSFDateUtil.IsCellDateFormatted(cell))
{
dr[i] = cell.DateCellValue;
}
else
{
dr[i] = cell.NumericCellValue;
}
}
else if (cell.CellType == NPOI.SS.UserModel.CellType.Boolean)
{
dr[i] = cell.BooleanCellValue;
}
else
{
dr[i] = cell.StringCellValue;
}
}
}
dt.Rows.Add(dr);
}
}
return dt;
}
#endregion
#region list转datatable
public static DataTable ListToDataTable<T>(IEnumerable<T> c)
{
var props = typeof(T).GetProperties();
var dt = new DataTable();
dt.Columns.AddRange(props.Select(p => new DataColumn(p.Name, p.PropertyType)).ToArray());
if (c.Count() > 0)
{
for (int i = 0; i < c.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo item in props)
{
object obj = item.GetValue(c.ElementAt(i), null);
tempList.Add(obj);
}
dt.LoadDataRow(tempList.ToArray(), true);
}
}
return dt;
}
#endregion
#region 写入excel
public static bool WriteExcel<T>(IList<T> list)
{
//打开保存excel对话框
var filepath = SaveExcelFileDialog();
if (filepath == null)
return false;
var dt = ListToDataTable<T>(list);
if (!string.IsNullOrEmpty(filepath) && null != dt && dt.Rows.Count > 0)
{
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();
NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("Sheet1");
NPOI.SS.UserModel.IRow row = sheet.CreateRow(0);
for (int i = 0; i < dt.Columns.Count; i++)
{
row.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
}
for (int i = 0; i < dt.Rows.Count; i++)
{
NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++)
{
row2.CreateCell(j).SetCellValue(Convert.ToString(dt.Rows[i][j]));
}
}
// 写入到客户端
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
book.Write(ms);
using (FileStream fs = new FileStream(filepath, FileMode.Create, FileAccess.Write))
{
byte[] data = ms.ToArray();
fs.Write(data, 0, data.Length);
fs.Flush();
}
book = null;
}
}
return true;
}
#endregion
2021年03月11日 07点03分
6
nuget 安装 nopi
2021年03月11日 07点03分