winform导出excel问题

jiafenhaonan 2010-09-10 02:47:10
我要把DataGridView中的数据导出为excel,现在已经导出成功了,但是导出的数据0都被去除了

例:数据为00001,到处以后为1
该怎么解决
...全文
187 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ryan20082009 2010-09-10
  • 打赏
  • 举报
回复
看下我的我是根据我的Excel写的,你改改
public TextReader ReaderExcel1(string filePath)
{
using (TextWriter tw = new StringWriter())
{
//Open Excel.
string start = "A";
string end = "X";
Application app = new Application();
Workbooks wbs = app.Workbooks;
_Workbook wb = wbs.Add(filePath);
Sheets shs = wb.Sheets;
_Worksheet sh = (_Worksheet)shs.get_Item(1);
int i = -1;
string[] year = new string[6];
bool bo = false;
while (true)
{
i++;
if (bo)
{
break;
}
for (int n = 5; n < 20; n++)
{
Range r = sh.get_Range(start + (6 + i * 18), end + (6 + i * 18));
Object[,] saRet1 = (Object[,])r.get_Value(System.Reflection.Missing.Value);
if (saRet1[1, 2] == null || !saRet1[1, 2].Equals("Rate"))
{
bo = true;
break;
}
Range rr = sh.get_Range(start + (n + i * 18), end + (n + i * 18));
Object[,] saRet = (Object[,])rr.get_Value(System.Reflection.Missing.Value);
for (int k = 0; k < 6; k++)
{
if (saRet[1, 2 + k * 4] != null)
{
if (n == 5)
{
year[k] = saRet[1, 2 + k * 4].ToString();
}
if (n >= 8 && n <= 20)
{
string strTime = saRet[1, 1].ToString();
string res = strTime.Substring(0, 3);
string returnMoth = DateTime.ParseExact(res, "MMM", null).Month.ToString();
string[] strA = new string[7];
strA[0] = returnMoth + "/" + year[k];
strA[1] = ",";
strA[2] = saRet[1, 2 + k * 4].ToString();
strA[3] = ",";
strA[4] = saRet[1, 3 + k * 4].ToString();
strA[5] = ",";
strA[6] = Str(saRet, 4 + k * 4);
WriteingCsv(tw, strA);
}
}
}
}
}
return new StringReader(tw.ToString());
}
}
honkerhero 2010-09-10
  • 打赏
  • 举报
回复
都是很强的回复啊,加‘一般是不得已而为之,想办法把那一列设置成文本啊,在EXCEL操作一遍,录个宏分析一下,转成C#代码就行了
jiafenhaonan 2010-09-10
  • 打赏
  • 举报
回复
加上了’ 0是显示出来了 但是数据格中会有一个绿色的标签 怎么去掉
jiafenhaonan 2010-09-10
  • 打赏
  • 举报
回复
#region 导出excel

private void ExportExcel(string fileName, DataGridView myDGV)
{
string saveFileName = "";
//bool fileSaved = false;
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = fileName;
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 < myDGV.ColumnCount; i++)
{
worksheet.Cells[1, i + 1] = myDGV.Columns[i].HeaderText;
}
//写入数值
for (int r = 0; r < myDGV.Rows.Count; r++)
{
for (int i = 0; i < myDGV.ColumnCount; i++)
{
worksheet.Cells[r + 2, i + 1] = myDGV.Rows[r].Cells[i].Value.ToString();
}
System.Windows.Forms.Application.DoEvents();
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
//if (Microsoft.Office.Interop.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
MessageBox.Show("资料保存成功", "提示", MessageBoxButtons.OK);
}

#endregion



这是我饿得到处方法 应该加在哪里?
Neil198 2010-09-10
  • 打赏
  • 举报
回复
你导出excel的时候不得一条一条的添加数据???
孟子E章 2010-09-10
  • 打赏
  • 举报
回复
设置样式
<Cell ss:StyleID='border'><Data ss:Type='String'>
jiafenhaonan 2010-09-10
  • 打赏
  • 举报
回复
怎么加啊 总不能在DataGridView中吧字段加上’吧 有没有源码啊
Neil198 2010-09-10
  • 打赏
  • 举报
回复
'就是文本了
Neil198 2010-09-10
  • 打赏
  • 举报
回复
最简单的方法。在每个00001这样的数据前面加上字符 '
jiafenhaonan 2010-09-10
  • 打赏
  • 举报
回复
我现在想知道的是怎么转换成文本
IsUaTyAdd 2010-09-10
  • 打赏
  • 举报
回复
格式的问题,用decimal 转一下。
jiafenhaonan 2010-09-10
  • 打赏
  • 举报
回复
晕 我说大哥 你跟没说有什么区别啊
a174740341 2010-09-10
  • 打赏
  • 举报
回复
果断的把Excel数据格式变为文本

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧