志在指尖
用双手敲打未来

datatable<-->excle相互转换

代码:
privatevoidButton1_Click(objectsender,RoutedEventArgse)
{
OpenFileDialogfile=newOpenFileDialog();
if(file.ShowDialog()==DialogResult.OK)
{
stringPath=file.FileName.ToString();//文件完整路径
//文件名
stringName=Path.Substring(Path.LastIndexOf(“\\”)+1);
txtfileName.Text=Path;//将文件路径放入路径显示文本框
}
}
///
///datatable->databox
///
///
///
//调用方法解析excle
privatevoidButton2_Click(objectsender,RoutedEventArgse)
{
stringfileName=txtfileName.Text;
DataTabletable=ExcelToDataTable(fileName);
if(table!=null)
{
databox.InitDataBox();
databox.BindDataTable(table);
for(inti=0;i<table.Columns.Count;i++)
{
databox.SetColumnsHeader(i,table.Columns.ColumnName);
}
}else{
this.ShowErrorMessageBox(“文件不存在或许文件为空”);
}
}
///
///excle->datatable
///
///
///
publicDataTableExcelToDataTable(stringfileName)
{
try
{
//整个Excel表格叫做作业表:WorkBook(作业薄),包含的叫页(作业表):Sheet;行:Row;单元格Cell。datatable<-->excle相互转换
FileStreamfs=newFileStream(fileName,FileMode.OpenOrCreate);//读取文件流
if(fileName.IndexOf(“.xlsx”)>0)//2007版本
{
workbook=newXSSFWorkbook(fs);
}
elseif(fileName.IndexOf(“.xls”)>0)//2003版本
{
workbook=newHSSFWorkbook(fs);
}
varsheet1=workbook.GetSheetAt(0);//获取榜首个sheet
DataTabletable=newDataTable();//
varrow1=sheet1.GetRow(0);//获取榜首行即标头
intcellCount=row1.LastCellNum;//榜首行的列数
//把榜首行的数据添加到datatable的列名
for(inti=row1.FirstCellNum;i<cellCount;i++)
{
DataColumncolumn=newDataColumn(row1.GetCell(i).StringCellValue);
table.Columns.Add(column);
}
introwCount=sheet1.LastRowNum;//总行数
//把每行数据添加到datatable中
for(inti=(sheet1.FirstRowNum+1);i<sheet1.LastRowNum+1;i++)
{
IRowrow=sheet1.GetRow(i);
DataRowdataRow=table.NewRow();
for(intj=row.FirstCellNum;j<cellCount;j++)
{
if(row.GetCell(j)!=null)
dataRow[j]=row.GetCell(j).ToString();
}
table.Rows.Add(dataRow);
}
returntable;
}
catch(NullReferenceExceptione)
{
Platform.Common.LogSystem.PlatformLogger.TradeErrorInfo(“excle文件不存在或许为空”,e);
DataTabledt=newDataTable();
returndt;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
databox转为excle保存
privatevoidOutToExcel(System.Data.DataTabledt)
{
#region验证可操作性
//界说表格内数据的行数和列数
introwscount=dt.Rows.Count;
intcolscount=dt.Columns.Count;
//行数有必要大于0
if(rowscount<=0)
{
System.Windows.Forms.MessageBox.Show(“没有数据可供保存”,”提示”,MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//列数有必要大于0
if(colscount<=0)
{
System.Windows.Forms.MessageBox.Show(“没有数据可供保存”,”提示”,MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//行数不可以大于65536
if(rowscount>65536)
{
System.Windows.Forms.MessageBox.Show(“数据记载数太多(最多不能超过65536条),不能保存”,”提示”,MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
//列数不可以大于255
if(colscount>255)
{
System.Windows.Forms.MessageBox.Show(“数据记载行数太多,不能保存”,”提示”,MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
#endregion
SaveFileDialogsaveFileDialog=newSaveFileDialog();
saveFileDialog.Filter=”Execlfiles(*.xls)|*.xls”;
saveFileDialog.FilterIndex=0;
saveFileDialog.RestoreDirectory=true;
saveFileDialog.CreatePrompt=true;
saveFileDialog.Title=”保存为Excel文件”;
saveFileDialog.ShowDialog();
if(saveFileDialog.FileName.IndexOf(“:”)<0)return;//被点了”撤销”
StreammyStream;
myStream=saveFileDialog.OpenFile();
StreamWritersw=newStreamWriter(myStream,System.Text.Encoding.GetEncoding(-0));
stringcolumnTitle=””;
try
{
//写入列标题
for(inti=0;i<colscount;i++)
{
if(i>0)
{
columnTitle+=”\t”;
}
columnTitle+=dt.Columns.ColumnName;
}
sw.WriteLine(columnTitle);
//写入列内容
for(intj=0;j<rowscount;j++)
{
stringcolumnValue=””;
for(intk=0;k<colscount;k++)
{
if(k>0)
{
columnValue+=”\t”;
}
if(dt.Rows[j][k]==null)
columnValue+=””;
else
{
if(dt.Rows[j][k].GetType()==typeof(string)&&dt.Rows[j][k].ToString().StartsWith(“0”))
{
columnValue+=”‘”+dt.Rows[j][k].ToString();
}
else
columnValue+=dt.Rows[j][k].ToString();
}
}
sw.WriteLine(columnValue);
}
sw.Close();
myStream.Close();
}
catch(Exceptionex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString());
}
finally
{
sw.Close();
myStream.Close();
System.Windows.Forms.MessageBox.Show(“数据导出成功,共导出”+dt.Rows.Count.ToString()+”条记载”);
}
}
}

未经允许不得转载:IT技术网站 » datatable<-->excle相互转换
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载