C#excel导出 excel单元格文本格式格式怎么改文本格式

[转载]C#导出为Excel,并设置文本格式,自动调整列宽
&Microsoft.Office.Interop.Excel.Application
Microsoft.Office.Interop.Excel._Workbook oWB;
Microsoft.Office.Interop.Excel._Worksheet oS
Microsoft.Office.Interop.Excel.Range oR
DateTime timeNow = DateTime.N
string fileName = "ProdcutCrossSell" + timeNow.Year + timeNow.Month
+ timeNow.Day + timeNow.Hour + timeNow.Minute + timeNow.Second +
string filepath = Server.MapPath(".") + "\CrossSellImportFile\" +
&&&&&&&&&&&
GC.Collect();
&&&&&&&&&&&
oXL = new Microsoft.Office.Interop.Excel.Application();
&&&&&&&&&&&
oXL.Visible =
&&&&&&&&&&&
(Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet));
&&&&&&&&&&&
(Microsoft.Office.Interop.Excel._Worksheet)(oWB.ActiveSheet);
&&&&&&&&&&&
oRang = oSheet.get_Range("A1", oSheet.Cells[1,
dt.Columns.Count]);
&&&&&&&&&&&
object optional = System.Reflection.Missing.V
&&&&&&&&&&&
oRang.Merge(true);
&&&&&&&&&&&
oRang.Value2 = "ProdcutCrossSell";
&&&&&&&&&&&
oRang.Font.Size = "16";
&&&&&&&&&&&
oRang.Font.Bold =
&&&&&&&&&&&
oRang.VerticalAlignment =
Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignB
&&&&&&&&&&&
oRang.HorizontalAlignment =
Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignC
&&&&&&&&&&&
for (int i = 0; i & dt.Columns.C i++)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
oSheet.Cells[2, i + 1] = dt.Columns[i].ColumnN
&&&&&&&&&&&
&&&&&&&&&&&
int iRow = 3;
&&&&&&&&&&&
for (int r = 0; r & dt.Rows.C r++)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
for (int c = 0; c & dt.Columns.C c++)
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&
oSheet.Cells[iRow, c + 1] ="'"+
dt.Rows[r][c].ToString();&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
oRang = oSheet.get_Range("A2", "F2");
&&&&&&&&&&&
oRang.EntireColumn.AutoFit();
&&&&&&&&&&&
oRang = oSheet.get_Range("A3", "F" + (2 + dt.Rows.Count));
&&&&&&&&&&&
//oRang = oSheet.get_Range("A3", "F10");
&&&&&&&&&&&
oRang.NumberFormatLocal = "@";
&&&&&&&&&&&
//oRang.EntireColumn.AutoFit();
&&&&&&&&&&&
oXL.Visible =
&&&&&&&&&&&
oXL.UserControl =
&&&&&&&&&&&
oWB.SaveAs(filepath,
Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, null,
null, false, false,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, false,
false, null, null, null);
&&&&&&&&&&&
oWB.Close(null, null, null);
&&&&&&&&&&&
oXL.Quit();
&&&&&&&&&&&
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWB);
&&&&&&&&&&&
System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL);
&&&&&&&&&&&
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet);
catch (Exception ex)
&&&&&&&&&&&
throw new Exception(ex.Message);
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
GC.Collect();
System.IO.FileInfo file = new System.IO.FileInfo(filepath);
Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
Response.AddHeader("Content-Disposition", " filename=" +
Server.UrlEncode(fileName));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.AddHeader("Content-Length", file.Length.ToString());
// 指定返回的是一个不能被客户端读取的流,必须被下载
Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
Response.WriteFile(file.FullName);
// 停止页面的执行
Response.End();
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。2762人阅读
? 项目实战(29)
……【机房收费】(12)
&span style=&font-family:Times New Rfont-size:18&&'**********************************************
名:LeadToExcel
' 命名空间:UI
能:将DataGridView中的数据导出到Excel表中
者:郝贵宝
' 生成日期: 10:55:54
号:V1.0.0.0
' 修改日志:
' 版权说明:
'***********************************************
Imports Microsoft.Office.Interop
'添加对Office的引用
Module LeadToExcel
Function LeadToExcel(ByVal dgv As DataGridView) As Boolean
'导出为Excel函数
'建立Excel连接
Dim myExcel As New Excel.Application()
myExcel.Application.Workbooks.Add(True)
myExcel.Visible = True
'定义循环变量,行,列变量
Dim intRow As Integer
Dim intColumn As Integer
Dim intTitle As Integer
'添加表头
For intTitle = 0 To dgv.ColumnCount - 1
myExcel.Cells(1, intTitle + 1) = dgv.Columns(intTitle).HeaderText
Next intTitle
'通过循环来添加控件中的数据到表格中
For intRow = 0 To dgv.RowCount - 1
For intColumn = 0 To dgv.ColumnCount - 1
'由于第一行是表头,所以添加数据时:
'Excel中从第二行,第一列(2,1)开始赋值,
'DataGridView从第一行,第一列(0,0)开始赋值(index 从0,0开始)
myExcel.Cells(intRow + 2, intColumn + 1) = dgv(intColumn, intRow).Value.ToString
Next intColumn
Next intRow
Return True
'添加完毕,返回true
End Function
End Module&/span&
&span style=&font-family:Times New Rfont-size:18&&
Private Sub btnLeadExcel_Click(sender As Object, e As EventArgs) Handles btnLeadExcel.Click
Call LeadToExcel.LeadToExcel(DataGridView1)
End Sub&/span&
如果你在DataGridView中显示的有数字,且数字以0开头,则导出Excel后0消失了。(比如某卡号为001,导出后显示为1)
在LeadToExcel模块中,赋值时在数据前加上&&’&& &变为文本格式即可,如下:
&span style=&font-family:Times New Rfont-size:18&&
'通过循环来添加控件中的数据到表格中
For intRow = 0 To dgv.RowCount - 1
For intColumn = 0 To dgv.ColumnCount - 1
'由于第一行是表头,所以添加数据时:
'Excel中从第二行,第一列(2,1)开始赋值,
'DataGridView从第一行,第一列(0,0)开始赋值(index 从0,0开始)
myExcel.Cells(intRow + 2, intColumn + 1) = &'& + dgv(intColumn, intRow).Value.ToString
Next intColumn
Next intRow&/span&按照上述方法,会把所有的单元格都变成了文本格式,并不一定满足所有情况,于是,需要找到数据所在列了,只在这一列内容的前面加“&’&” 就行了。
日期,时间,货币的格式转换都可以按照这个思路来解决。
如果当初在设计数据库或写实体时就能考虑到这些情况,而做出适当改变,或许后面的这些问题就不会产生了。(ps:还会遇到其他新的问题,呵呵,这些都需要日后不断的积累经验吧)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:225675次
积分:5415
积分:5415
排名:第4087名
原创:97篇
转载:12篇
评论:1477条
阅读:5088
阅读:34976
阅读:15604
(1)(3)(1)(6)(2)(3)(2)(5)(6)(3)(4)(2)(2)(3)(9)(1)(3)(5)(5)(2)(4)(1)(3)(2)(2)(2)(6)(2)(4)(4)(2)(2)(2)(2)(1)(1)(1)}

我要回帖

更多关于 单元格数字为文本格式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信