datatableexcle相互转换

IT技术2年前 (2022)发布 投稿用户
0

代码:

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()+”条记载”);
}
}
}

© 版权声明
好牛新坐标 广告
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com

相关文章