关于往excel导入数据的问题,谢谢各位进来看的大侠!

guchunjia0221 2006-11-01 10:29:33
我往excel导入数据是用这样方法:
string fileName=getExcelFileName();

FileStream objFileStream;
StreamWriter objStreamWriter;
string strLine="";
objFileStream = new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.Write);
objStreamWriter = new StreamWriter(objFileStream,System.Text.Encoding.Default);

for(int i=0;i<dt.Columns.Count;i++)
{
strLine=strLine+dt.Columns[i].ColumnName.ToString()+Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine="";

for(int i=0;i<dt.Rows.Count;i++)
{
for(int j=0;j<dt.Columns.Count;j++)
{
// if(dt.Rows[i][j].GetType().ToString()
// {
//
// }
strLine=strLine+dt.Rows[i][j].ToString()+Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine="";
}
objStreamWriter.Close();
objFileStream.Close();

MessageBox.Show("导出为Excel文件完成","提示" , MessageBoxButtons.OK,MessageBoxIcon.Information);
为了把列变成文本显示,我把
strLine=strLine+dt.Rows[i][j].ToString()+Convert.ToChar(9);
变成了
strLine=strLine+"'"+dt.Rows[i][j].ToString()+Convert.ToChar(9);
可是出来的excel里却能看到'号,
如果不加‘号,电话号码又变成了科学计数法。

我用Excel.Application对象导入的时候加’号,是看不出来的。可是速度太慢了。
不知道能否叙述的明确,请各位指点解决办法,你们导数据到excel是用什么方法的?

...全文
220 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xlshen_lxz 2006-11-01
  • 打赏
  • 举报
回复
学习
winsor_w 2006-11-01
  • 打赏
  • 举报
回复
很多人问过这样类似的问题了
下面有个例子,自己看看先
http://blog.sina.com.cn/u/4ab06e97010005x7
winsor_w 2006-11-01
  • 打赏
  • 举报
回复
用rang
guchunjia0221 2006-11-01
  • 打赏
  • 举报
回复
发现代码换行不太好看:
string fileName=getExcelFileName();

FileStream objFileStream;
StreamWriter objStreamWriter;
string strLine="";
objFileStream = new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.Write);
objStreamWriter = new StreamWriter(objFileStream,System.Text.Encoding.Default);

for(int i=0;i<dt.Columns.Count;i++)
{
strLine=strLine+dt.Columns[i].ColumnName.ToString()+Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine="";

for(int i=0;i<dt.Rows.Count;i++)
{
for(int j=0;j<dt.Columns.Count;j++)
{
strLine=strLine+dt.Rows[i][j].ToString()+Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine="";
}
objStreamWriter.Close();
objFileStream.Close();
winsor_w 2006-11-01
  • 打赏
  • 举报
回复
你只要看我那个填充到Excel里面是怎么用的就可以了啊
Web跟Windows大同小异
guchunjia0221 2006-11-01
  • 打赏
  • 举报
回复
是不是需要GoldPrinter.dll呀!哪里有下载呀
guchunjia0221 2006-11-01
  • 打赏
  • 举报
回复
先谢楼上的
试试看!
dlzhangln 2006-11-01
  • 打赏
  • 举报
回复
/// <summary>
/// 将DataSet导出到Excel文件。
/// </summary>
///金质打印通里的代码吧,长江支流弄得,改一下就能用
/// <param name="ds">数据集,注意本方法每个表最多导数据不要大于65536,如果要导更大数据和海量数据,请使用另一专用组件可指定每页sheet大小。</param>
/// <param name="fileName">文件名,如果已存在则替换。</param>
/// <param name="caption">Excel的窗口标题。</param>
public static void Export(System.Data.DataSet ds,string fileName,string caption)
{

if (ds == null || ds.Tables.Count == 0)
{
return;
}

GoldPrinter.ExcelExpert.ExcelBase excel = null;

try
{
excel = new GoldPrinter.ExcelExpert.ExcelBase();

excel.Open();

excel.Caption = caption;

//清空
excel.WorkSheets.Clear();

for(int i = 0 ; i < ds.Tables.Count ; i++)
{
string[,] arrTable = null;

arrTable = GetArrFromTable(ds.Tables[i]);
Excel.Range range = excel.GetRange(1,1,ds.Tables[i].Rows.Count,ds.Tables[i].Columns.Count);
GoldPrinter.ExcelExpert.RangeVisitor rv = new GoldPrinter.ExcelExpert.RangeVisitor(range);
rv.SetValue(arrTable);
excel.WorkSheets.ActiveSheet.Name = ds.Tables[i].TableName;

excel.WorkSheets.Add().Activate();
}
excel.WorkSheets[0].Activate();

if (System.IO.File.Exists(fileName))
{
excel.SaveAs(fileName,true);
}
else
{
excel.SaveAs(fileName,true);
}
}
catch(Exception ex)
{
throw ex;
}
finally
{
excel.Close();
}
}


//不考虑dt删除了行的情况
private static string[,] GetArrFromTable(System.Data.DataTable dt)
{
string[,] arrTable = new string[dt.Rows.Count,dt.Columns.Count];

for(int i = 0 ; i < dt.Rows.Count ; i++)
{
for(int j = 0 ; j < dt.Columns.Count ; j++)
{
arrTable[i,j] = dt.Rows[i][j].ToString();
}
}

return arrTable;
}
guchunjia0221 2006-11-01
  • 打赏
  • 举报
回复
winsor_w(.net才是硬道理)
多谢你的帮忙,可是我有点看不懂哦,
下面一个方法是干什么的?
好象是在web下用的是吗?我在windows下怎么用应该?
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-11-01 10:29
社区公告

让您成为最强悍的C#开发者