问题描述
想实现用VS2012C#对excel导入和导出,该Excel有合并行和列,有什么好方法实现呢,谢谢大家了!
解决方案
解决方案二:
解决方案三:
解决方案四:
Towg5945多谢你了,有没有具体一点的例子呢,因为现在只是初学还有支持excel2003和2007么,谢谢你了!
解决方案五:
http://blog.sina.com.cn/s/blog_4ce36a78010161k9.html
解决方案六:
可以考虑使用myxls和NPOINPOI还支持2007以上的格式.简单的excel读取///<summary>///读取excel///</summary>///<paramname="fileName"></param>///<returns></returns>privateDataTableLoadExcel(stringfileName){intiColumnsCount=0;//所需要的列的数量判断,用来判断excel格式是否正确.dtXls=newDataTable();intiCodeIndex=0,iNameIndex=0,iSpecIndex=0,iUnitIndex=0;using(FileStreamfs=newFileStream(fileName,FileMode.Open)){HSSFWorkbookworkbook=newHSSFWorkbook(fs);ISheetsheet=workbook.GetSheetAt(0);//获取表1System.Collections.IEnumeratorrows=sheet.GetRowEnumerator();if(rows.MoveNext())//读取列名{HSSFRowrow=(HSSFRow)(rows.Current);for(inti=0;i<row.LastCellNum;i++)//遍历行的每一个单元格{if(row.Cells[i]!=null){stringstrName=row.Cells[i].ToString().Trim();switch(strName){case"代码":iCodeIndex=i;dtXls.Columns.Add(strName);iColumnsCount++;break;case"全名":iNameIndex=i;dtXls.Columns.Add(strName);iColumnsCount++;break;case"规格型号":iSpecIndex=i;dtXls.Columns.Add(strName);iColumnsCount++;break;case"基本计量单位":iUnitIndex=i;dtXls.Columns.Add(strName);iColumnsCount++;break;}}}}dtXls.Columns.Add("类别");if(iColumnsCount!=4){MessageBox.Show("无法获取所需的excel数据!");returnnull;}//读取内容while(rows.MoveNext()){DataRowdr=dtXls.NewRow();HSSFRowrow=(HSSFRow)rows.Current;ICellcellCode=row.GetCell(iCodeIndex);ICellcellName=row.GetCell(iNameIndex);ICellcellSpec=row.GetCell(iSpecIndex);ICellcellUnit=row.GetCell(iUnitIndex);if(cellCode==null){dr[0]="";continue;}else{if((rdoycl.Checked&&!isMathcCode(cellCode.ToString()))||(rdozj.Checked&&!isMatchTecCode(cellCode.ToString()))){continue;}dr[0]=cellCode.ToString();}if(cellName==null)dr[1]="";elsedr[1]=cellName.ToString();if(cellSpec==null)dr[2]="";elsedr[2]=cellSpec.ToString();if(cellUnit==null)dr[3]="";elsedr[3]=cellUnit.ToString();dr[4]=GetTypeNameById(dr[0].ToString());dtXls.Rows.Add(dr);}}returndtXls;}
解决方案七:
多谢大家了!