100分求教文件导出的方法: 输入参数为一个ds输出参数为一个bool类型的true/false导出的文件为excel/csv/txt文件方法要考虑速度问题。。请高手指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是把 一个ds导出的文件为excel/csv/txt文件里吗? string connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + templateFile + ";Extended Properties=\"Excel 8.0;HDR=YES\""; _conn = new OleDbConnection(connstring); _conn.Open(); _cmd = new OleDbCommand(); _cmd.Connection = _conn;// Create excel filestring strCmd = "CREATE TABLE workbook1 (Id int, Name nvarchar, Descriptioin nvarchar)"; _cmd.CommandText = strCmd; _cmd.ExecuteNonQuery();// Add recordcolumn = "Id , Name , Descriptioin "; value = "1, 'Taylor','Hello'"; strCmd = "INSERT INTO [workbook1$] ( " + column + ") values (" + value + ")"; _cmd.CommandText = strCmd; _cmd.ExecuteNonQuery(); ds自带导出xml的方法的,如果想快,就直接用它的WriteXml方法 楼主,你去看我的帖子,我的帖子的,因为太长,所以我把我的贴子贴了两楼,2楼就是XML方式导出的代码,你要用第一种也可以的。数据源是DATAVIEW还是DATASET其实都一样的。帖子地址是:http://topic.csdn.net/u/20100325/21/c822a751-a321-4f50-9982-63a503848498.html?81447 把下面这个方法中的datagridview相应的换成ds就好了 /// <summary> /// 将datagridview中的数据导出到excel中 /// </summary> /// <param name="fileNameString">保存路径</param> /// <param name="isShowExcele">是否显示excel</param> private void ExportDataGridview(string fileNameString, bool isShowExcele) { //定义表格内数据的行数和列数 int rowscount = dataGridView1.Rows.Count; int colscount = dataGridView1.Columns.Count; Microsoft.Office.Interop.Excel.Application objExcel = null; Microsoft.Office.Interop.Excel.Workbook objWorkbook = null; Microsoft.Office.Interop.Excel.Worksheet objsheet = null; try { //申明对象 objExcel = new Microsoft.Office.Interop.Excel.Application(); objWorkbook = objExcel.Workbooks.Add(Missing.Value); objsheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkbook.ActiveSheet; //设置EXCEL不可见 objExcel.Visible = false; //向Excel中写入表格的表头 int displayColumnsCount = 1; for (int i = 0; i <= dataGridView1.ColumnCount - 1; i++) { if (dataGridView1.Columns[i].Visible == true) { objExcel.Cells[1, displayColumnsCount] = dataGridView1.Columns[i].HeaderText.Trim(); displayColumnsCount++; } } //设置进度条 //tempProgressBar.Refresh(); //tempProgressBar.Visible = true; //tempProgressBar.Minimum=1; //tempProgressBar.Maximum=dgv.RowCount; //tempProgressBar.Step=1; //向Excel中逐行逐列写入表格中的数据 for (int row = 0; row <= dataGridView1.RowCount - 1; row++) { //tempProgressBar.PerformStep(); displayColumnsCount = 1; for (int col = 0; col < colscount; col++) { if (dataGridView1.Columns[col].Visible == true) { try { objExcel.Cells[row + 2, displayColumnsCount] = dataGridView1.Rows[row].Cells[col].Value.ToString().Trim(); displayColumnsCount++; } catch (Exception) { } } } } //隐藏进度条 //tempProgressBar.Visible = false; //保存文件 objExcel.Cells.HorizontalAlignment = XlHAlign.xlHAlignLeft; //文本左对齐 objWorkbook.SaveAs(fileNameString, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); } catch (Exception error) { MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } finally { //关闭Excel应用 if (objWorkbook != null) objWorkbook.Close(Missing.Value, Missing.Value, Missing.Value); if (objExcel.Workbooks != null) objExcel.Workbooks.Close(); if (objExcel != null) objExcel.Quit(); objsheet = null; objWorkbook = null; objExcel = null; } MessageBox.Show(fileNameString + "\n\n导出完毕! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information); } 你这是web的阿,我需要的是wenform的 winform的其实差不多啊,尤其是EXCEL类库的操作的,你看下我的代码,把它转成WINFORM就好了啊,我正在帮人弄个东西,没时间来试了。自己弄下也能学到很多东西啊。 private bool ExportToXls(string saveFileName, DataSet ds) { //Path. if (File.Exists(saveFileName)) { File.Delete(saveFileName); } string strPath = saveFileName.Substring(0, saveFileName.Length - 4); string strXml = strPath + ".xml";//xml文件 string strXsl = strPath + ".xsl";//xsl形式 string strXls = strPath + ".xls";//excel文件 try { GetXmlFile(ds, strXml); GetXSLFile(ds, strXsl); //Excel转换 XmlDocument doc = new XmlDocument(); doc.Load(strXml); XslTransform xslt = new XslTransform(); xslt.Load(strXsl); XmlElement root = doc.DocumentElement; XPathNavigator nav = root.CreateNavigator(); XmlTextWriter writer = new XmlTextWriter(strXls, null); xslt.Transform(nav, null, writer, null); writer.Close(); File.Delete(strXml); File.Delete(strXsl); return true; } catch (Exception ex) { throw (new Exception(ex.Message)); } } 问下lz这样的可以不..导出到excel文件的 导出的EXCEL 楼主参考下,是不是你想要的http://blog.csdn.net/benyouyong/archive/2010/03/26/5418874.aspx 1http://www.codeproject.com/KB/office/FastExcelExporting.aspx2http://www.codeproject.com/KB/dotnet/ExportToExcel.aspx //导出Excel的方法 private void ExportExcel() { DataSet ds=dtsSelect;//数据源 if(ds==null) return; string saveFileName=""; bool fileSaved=false; SaveFileDialog saveDialog=new SaveFileDialog(); saveDialog.DefaultExt ="xls"; saveDialog.Filter="Excel文件|*.xls"; saveDialog.FileName ="Sheet1"; saveDialog.ShowDialog(); saveFileName=saveDialog.FileName; if(saveFileName.IndexOf(":")<0) return; //被点了取消 Excel.Application xlApp=new Excel.Application(); if(xlApp==null) { MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel"); return; } Excel.Workbooks workbooks=xlApp.Workbooks; Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 //写入字段 for(int i=0;i<ds.Tables[0].Columns.Count;i++) { worksheet.Cells[1,i+1]=ds.Tables[0].Columns[i].ColumnName; } //写入数值 for(int r=0;r<ds.Tables[0].Rows.Count;r++) { for(int i=0;i<ds.Tables[0].Columns.Count;i++) { worksheet.Cells[r+2,i+1]=ds.Tables[0].Rows[r][i]; } System.Windows.Forms.Application.DoEvents(); } worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。 if(cmbxType.Text!="Notification") { Excel.Range rg=worksheet.get_Range(worksheet.Cells[2,2],worksheet.Cells[ds.Tables[0].Rows.Count+1,2]); rg.NumberFormat="00000000"; } if(saveFileName!="") { try { workbook.Saved =true; workbook.SaveCopyAs(saveFileName); fileSaved=true; } catch(Exception ex) { fileSaved=false; MessageBox.Show("导出文件时出错,文件可能正被打开!\n"+ex.Message); } } else { fileSaved=false; } xlApp.Quit(); GC.Collect();//强行销毁 if(fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL } 第二种可以导出excel,但是也可以导出xml但是导出xml的格式不好看。还有到处的excel的大小大了一倍。有解决方法吗〉? dataset导出excel的方法完全可以google一下 18楼基本上已经达成我的需求了。。1 只是导出EXCEL的格式处理不是很全面2 导出XML的格式也不是很直观。请18楼给改进下:谢谢了阿 如果输入参数为datareader对象,怎么实现比较好,谁有好的方法 http://www.codeproject.com/KB/cs/Excel_and_C_.aspx参考这个自己改格式了。 C#里如何做GPS轨迹图? 求教,求解释! 谢谢 这段代码是什么意思? 关于console控制台程序的main函数参数问题。 帅哥们帮帮忙..cmd.ExecuteReader()这个出了问题.. c#中TreeNode的Tag取出来是空值,哪位高手能帮忙解决一下? 请教高手!怎样能实现像操作系统安装程序那样实现安装的时候复制文件,安装后删除文件. 求个电子书下载的好地址,不要www.netyi.net c# 如何实现点击按钮在文本框中显示代码 C# 类里面能写html语言吗 在Asp.net Web应用程序中如何使用MessageBox c# List<>排序 求教文件导出的方法2:
导出的文件为excel/csv/txt文件里吗?
+ ";Extended Properties=\"Excel 8.0;HDR=YES\"";
_conn = new OleDbConnection(connstring);
_conn.Open();
_cmd = new OleDbCommand();
_cmd.Connection = _conn;
// Create excel file
string strCmd = "CREATE TABLE workbook1 (Id int, Name nvarchar, Descriptioin nvarchar)";
_cmd.CommandText = strCmd;
_cmd.ExecuteNonQuery();
// Add record
column = "Id , Name , Descriptioin "; value = "1, 'Taylor','Hello'"; strCmd = "INSERT INTO [workbook1$] ( " + column + ") values (" + value + ")";
_cmd.CommandText = strCmd;
_cmd.ExecuteNonQuery();
帖子地址是:http://topic.csdn.net/u/20100325/21/c822a751-a321-4f50-9982-63a503848498.html?81447
/// <summary>
/// 将datagridview中的数据导出到excel中
/// </summary>
/// <param name="fileNameString">保存路径</param>
/// <param name="isShowExcele">是否显示excel</param>
private void ExportDataGridview(string fileNameString, bool isShowExcele)
{
//定义表格内数据的行数和列数
int rowscount = dataGridView1.Rows.Count;
int colscount = dataGridView1.Columns.Count; Microsoft.Office.Interop.Excel.Application objExcel = null;
Microsoft.Office.Interop.Excel.Workbook objWorkbook = null;
Microsoft.Office.Interop.Excel.Worksheet objsheet = null;
try
{
//申明对象
objExcel = new Microsoft.Office.Interop.Excel.Application();
objWorkbook = objExcel.Workbooks.Add(Missing.Value);
objsheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkbook.ActiveSheet;
//设置EXCEL不可见
objExcel.Visible = false;
//向Excel中写入表格的表头
int displayColumnsCount = 1;
for (int i = 0; i <= dataGridView1.ColumnCount - 1; i++)
{
if (dataGridView1.Columns[i].Visible == true)
{
objExcel.Cells[1, displayColumnsCount] = dataGridView1.Columns[i].HeaderText.Trim();
displayColumnsCount++;
}
}
//设置进度条
//tempProgressBar.Refresh();
//tempProgressBar.Visible = true;
//tempProgressBar.Minimum=1;
//tempProgressBar.Maximum=dgv.RowCount;
//tempProgressBar.Step=1;
//向Excel中逐行逐列写入表格中的数据
for (int row = 0; row <= dataGridView1.RowCount - 1; row++)
{
//tempProgressBar.PerformStep();
displayColumnsCount = 1;
for (int col = 0; col < colscount; col++)
{
if (dataGridView1.Columns[col].Visible == true)
{
try
{
objExcel.Cells[row + 2, displayColumnsCount] = dataGridView1.Rows[row].Cells[col].Value.ToString().Trim();
displayColumnsCount++;
}
catch (Exception)
{
}
}
}
}
//隐藏进度条
//tempProgressBar.Visible = false;
//保存文件 objExcel.Cells.HorizontalAlignment = XlHAlign.xlHAlignLeft; //文本左对齐 objWorkbook.SaveAs(fileNameString, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value);
}
catch (Exception error)
{
MessageBox.Show(error.Message, "警告 ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
finally
{
//关闭Excel应用
if (objWorkbook != null) objWorkbook.Close(Missing.Value, Missing.Value, Missing.Value);
if (objExcel.Workbooks != null) objExcel.Workbooks.Close();
if (objExcel != null) objExcel.Quit();
objsheet = null;
objWorkbook = null;
objExcel = null;
}
MessageBox.Show(fileNameString + "\n\n导出完毕! ", "提示 ", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
{
//Path.
if (File.Exists(saveFileName))
{
File.Delete(saveFileName);
}
string strPath = saveFileName.Substring(0, saveFileName.Length - 4);
string strXml = strPath + ".xml";//xml文件
string strXsl = strPath + ".xsl";//xsl形式
string strXls = strPath + ".xls";//excel文件 try
{
GetXmlFile(ds, strXml);
GetXSLFile(ds, strXsl); //Excel转换
XmlDocument doc = new XmlDocument();
doc.Load(strXml);
XslTransform xslt = new XslTransform();
xslt.Load(strXsl);
XmlElement root = doc.DocumentElement;
XPathNavigator nav = root.CreateNavigator();
XmlTextWriter writer = new XmlTextWriter(strXls, null);
xslt.Transform(nav, null, writer, null);
writer.Close();
File.Delete(strXml);
File.Delete(strXsl);
return true;
}
catch (Exception ex)
{
throw (new Exception(ex.Message));
}
}
http://blog.csdn.net/benyouyong/archive/2010/03/26/5418874.aspx
http://www.codeproject.com/KB/office/FastExcelExporting.aspx
2
http://www.codeproject.com/KB/dotnet/ExportToExcel.aspx
//导出Excel的方法
private void ExportExcel()
{
DataSet ds=dtsSelect;//数据源
if(ds==null) return; string saveFileName="";
bool fileSaved=false;
SaveFileDialog saveDialog=new SaveFileDialog();
saveDialog.DefaultExt ="xls";
saveDialog.Filter="Excel文件|*.xls";
saveDialog.FileName ="Sheet1";
saveDialog.ShowDialog();
saveFileName=saveDialog.FileName;
if(saveFileName.IndexOf(":")<0) return; //被点了取消 Excel.Application xlApp=new Excel.Application(); if(xlApp==null)
{
MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
return;
} Excel.Workbooks workbooks=xlApp.Workbooks;
Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
//写入字段
for(int i=0;i<ds.Tables[0].Columns.Count;i++)
{
worksheet.Cells[1,i+1]=ds.Tables[0].Columns[i].ColumnName;
}
//写入数值
for(int r=0;r<ds.Tables[0].Rows.Count;r++)
{
for(int i=0;i<ds.Tables[0].Columns.Count;i++)
{
worksheet.Cells[r+2,i+1]=ds.Tables[0].Rows[r][i];
}
System.Windows.Forms.Application.DoEvents();
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。
if(cmbxType.Text!="Notification")
{
Excel.Range rg=worksheet.get_Range(worksheet.Cells[2,2],worksheet.Cells[ds.Tables[0].Rows.Count+1,2]);
rg.NumberFormat="00000000";
}
if(saveFileName!="")
{
try
{
workbook.Saved =true;
workbook.SaveCopyAs(saveFileName);
fileSaved=true;
}
catch(Exception ex)
{
fileSaved=false;
MessageBox.Show("导出文件时出错,文件可能正被打开!\n"+ex.Message);
}
}
else
{
fileSaved=false;
}
xlApp.Quit();
GC.Collect();//强行销毁
if(fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
}
第二种可以导出excel,但是也可以导出xml
但是导出xml的格式不好看。还有到处的excel的大小大了一倍。有解决方法吗〉?
请18楼给改进下:谢谢了阿