菜鸟求救,急,关于Excel的
admin 发表于 2010-04-21 | 来源:互联网 | 阅读:
我用C#从一个txt文件中读入了一组数据,想把这组数据写入到Excel表格中,如何实现了?还有需要加什么头文件才能操作Excel表格了?急啊,请高手指点啊!
我用C#从一个txt文件中读入了一组数据,想把这组数据写入到Excel表格中,如何实现了?还有需要加什么头文件才能操作Excel表格了?急啊,请高手指点啊!
评论功能因故关闭!
请加入我们的QQ群一起参与讨论:群号59400482(500人超级群)
以前有很多这个帖子,再转贴一下:在使用用本文的方法前,需要先安装Office 的Excel程序,然后,引用 Excel 的对象包装:using Microsoft.Office.Interop.Excel; 不同的Office版本可能引用的名称不同。使用下面的代码,完成数据写入操作:C# code
private void writeData(string excelFileName,DataSet dsResult,)
{
_Application xlApp = null;
_Workbook xlWorkbook = null;
_Worksheet xlWorksheet = null;
System.Reflection.Missing missing = System.Reflection.Missing.Value;
string saveAsPath = "";
try
{
xlApp = new ApplicationClass();
xlApp.Visible =true ;
xlWorkbook=xlApp.Workbooks.Open(excelFileName, missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing);
xlWorksheet = xlWorkbook.Worksheets[1] as _Worksheet;
//xlWorksheet.Name = "NewWorksheet";
//xlWorksheet.Cells[1, "A"] = "Topic: ";
//xlWorksheet.Cells[1, "B"] = ".Net Interop Excel Demo";
for (int x = 4; x < 92; x++)
{
object rang = xlWorksheet.Cells[x, "D"];
if (rang != null)
{
object objText = ((Range)rang).Value2;
string strCellText = objText==null?"":objText.ToString();
if (strCellText == "")
{
rang = xlWorksheet.Cells[x, "C"];
strCellText = "";
if (rang != null)
{
objText = ((Range)rang).Value2;
strCellText = objText == null ? "" : objText.ToString();
}
}
//xlWorksheet.Cells[x, "E"] = strCellText;
DataRow[] rows = dsResult.Tables[0].Select("Name=’" + strCellText + "’");
if (rows.Length > 0)
{
//防止有空值
if(rows[0]["Count"]!=DBNull.Value )
xlWorksheet.Cells[x, "H"] = rows[0]["Count"].ToString();
}
}
}
xlWorkbook.Save();
//saveAsPath = System.Windows.Forms.Application.StartupPath + "\\" + xlWorkbook.Name;
//xlWorkbook.SaveAs(saveAsPath, missing, missing, missing, missing,
// missing, XlSaveAsAccessMode.xlShared, missing, missing, missing,
// missing, missing);
//xlApp.Quit();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
//xlApp = null;
//GC.Collect();
}
}
本例没有直接关闭文件,如果你要另存为一个文件,把注释取消即可。注意获取单元格的方法:
学习了!@
1楼的方法可以做到,还要还要导一个包
C# code
using (SqlConnection conn = new SqlConnection(@"Server=127.0.0.1;Initial Catalog=demo;Uid=sa;Pwd=111111;"))
{
conn.Open();
SqlCommand cmd = new SqlCommand(@"select * from test", conn);
SqlDataAdapter ada = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
ada.Fill(ds);
System.Data.DataTable t = ds.Tables[0];
if (t == null) return;
try
{
string fname2 = "d:\\";
string fname1 = "T_" + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
string FileName = fname2 + fname1 + ".xls";
FileStream objFileStream;
StreamWriter objStreamWriter;
string strLine = "";
objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);
//插入标题
for (int i = 0; i < t.Columns.Count; i++)
{
strLine = strLine + t.Columns[i].ColumnName.ToString() + Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine = "";
//开始插入数据
for (int i = 0; i < t.Rows.Count; i++)
{
//表格的自动编号strLine = strLine + (i+1) +Convert.ToChar(9);
for (int j = 0; j < t.Columns.Count; j++)
{
strLine = strLine + t.Rows[i][j].ToString() + Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine = "";
}
objStreamWriter.Close();
objFileStream.Close();
}
catch
{
MessageBox.Show("生成xls文件时发生错误");
}
}
这是从数据库读出后生成xls,改改就可以了