c操作excel多种方法比较Word文档格式.docx
- 文档编号:18595755
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:11
- 大小:19.20KB
c操作excel多种方法比较Word文档格式.docx
《c操作excel多种方法比较Word文档格式.docx》由会员分享,可在线阅读,更多相关《c操作excel多种方法比较Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
2SqlConnectionconn=newSqlConnection(str);
3conn.Open();
4intn=0;
5for(inti=1;
i&
lt;
20;
i++)
6{
7if(n&
gt;
3)
8break;
9else
10if(msheet.Cells.get_Range("
A"
+i,Type.Missing).Text.ToString()=="
"
&
amp;
&
n&
=3)
11{n++;
12else
13{
14//循环获取excel单元格的值一次一次的插入,excuteSql为执行的存储过程
15excuteSql(msheet.Cells.get_Range("
B"
+i,Type.Missing).Text.ToString(),
16msheet.Cells.get_Range("
+(i+1),Type.Missing).Text.ToString(),
17msheet.Cells.get_Range("
+(i+2),Type.Missing).Text.ToString(),
18conn);
19i=i+3;
20
21}
22}
23
24conn.Close();
二快速导入导出
1.我们都知道当向db里批量插入数据的时候我们会选择SqlBulkCopy
if(dataTable!
=null&
dataTable.Rows.Count!
=0)
sqlBulkCopy.WriteToServer(dataTable);
}
这个可以看深山老林新发的一篇SQLServer中批量插入数据方式的性能对比下面是SqlBulkCopy的方法,这个方法有一个弊端就是当excel某一列即有文字,还有日期的时候,会出现null值,我在网上查了一些资料说连接字串加上;
HDR=YES;
IMEX=1'
的时候会都当做字符处理,但是还是会出现一些bug,所以建议最好先把excel数据分析到datatable里然后再用SqlBulkCopy倒入数据库
1//blockcopytoDBfromExcel
2//Byxijun,
3//step1createanexcelfileC:
\Inetpub\wwwroot\test.xls,fillcell(1,1)with"
Data"
cell(1,2)with"
name"
4//step2createtablenamed"
with2column("
data"
"
)inyourDB
5//therethecodebelow:
6DateTimet1=DateTime.Now;
7Response.Write("
br&
starttime:
+t1.ToString());
8stringExcelFile=@"
C:
\\20090916_Hub_Report.xls"
9stringexcelConnectionString=@"
Provider=Microsoft.Jet.OLEDB.4.0;
DataSource="
+ExcelFile+"
ExtendedProperties='
Excel8.0;
10
11using(OleDbConnectionexcelConnection=newOleDbConnection(excelConnectionString))
12{
13
14excelConnection.Open();
15//Gettingsourcedata
16//非空讀入數據
17OleDbCommandcommand=newOleDbCommand("
Select[Region],[CustomerPN],[RMA],[Date],[QTY],[Return/Pull]FROM[20090916_Hub_Report$]"
excelConnection);
18//InitializeSqlBulkCopyobject
19
20using(OleDbDataReaderdr=command.ExecuteReader())
21{
22//Copydatatodestination
23stringsqlConnectionString=@"
DataSource=MININT-G87PHNA\SQLEXPRESS;
InitialCatalog=GDS_Service;
24using(SqlBulkCopybulkCopy=newSqlBulkCopy(sqlConnectionString))
25{
26bulkCopy.DestinationTableName="
GDS_Hub_data"
27//加入只加入一個列的話,那么就會其他數據庫列都默認為空。
28bulkCopy.ColumnMappings.Add("
Region"
"
region"
29bulkCopy.ColumnMappings.Add("
CustomerPN"
customer_item_number"
30bulkCopy.ColumnMappings.Add("
RMA"
Rma"
31bulkCopy.ColumnMappings.Add("
Date"
date"
32bulkCopy.ColumnMappings.Add("
QTY"
Qty_1"
33bulkCopy.ColumnMappings.Add("
Return/Pull"
return_pull"
34//bcp.BatchSize=100;
//每次传输的行数
35//bcp.NotifyAfter=100;
//进度提示的行数
36bulkCopy.BatchSize=100;
37bulkCopy.NotifyAfter=100;
38bulkCopy.WriteToServer((IDataReader)dr);
39
40
41}
42}
43//Closingconnection
44excelConnection.Close();
45}
46
47DateTimet2=DateTime.Now;
48Response.Write("
Endtime:
+t2.ToString());
49Response.Write("
usetime:
+((TimeSpan)(t2-t1)).Milliseconds.ToString()+"
Milliseconds"
50Response.Write("
inserrecordcount:
3307"
2.快速导出db的数据到excel
这种方法就是利用
Excel.QueryTables
Excel.QueryTable
Querytable把数据快速导入excel里。
我们在做复杂报表的时候,这个用的是比较多了,但是单单会这个没有用,它只是快速的把db里的数据放放到excel里,
在做大量数据而且需要设定excel样式的时候我们会选择先用这种方法把数据导入excel一个临时sheet,再利sheet复制,sheet移动,和一些excel样式设定,以及
excel一个强大的自动填充的功能,那么这些就可以让我们快速的做出花样多试的excel报表,当然这个要求我们比较熟练office的操作,包括宏的操作。
1publicstringquery_table_getdata(stringsourpath)
2{
3stringstr_path=sourpath.Substring(0,sourpath.Length-22);
4str_path=str_path+"
basic.xls"
5
6Excel.QueryTablesm_objQryTables=null;
7Excel.QueryTablem_objQryTable=null;
8Excel.Applicationm_objExcel=null;
9Excel.Workbooksm_objBooks=null;
10Excel.Workbookm_objBook=null;
11Excel.Sheetsm_objSheets=null;
12Excel.Worksheetm_objSheet=null;
13Excel.Rangem_objRange=null;
14m_objExcel=newExcel.Application();
15
16//try
17//{
18m_objBooks=m_objExcel.Workbooks;
19m_objBooks.Open(sourpath,Type.Missing,Type.Missing,Type.Missing,Type.Missing,
20Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
21
22m_objBook=(Excel.Workbook)m_objBooks.get_Item
(1);
24
25m_objSheets=(Excel.Sheets)m_objBook.Worksheets;
26m_objSheet=(Excel.Worksheet)m_objSheets.get_Item
(1);
27m_objRange=m_objSheet.get_Range("
A2"
Type.Missing);
28m_objQryTables=m_objSheet.QueryTables;
29stringsqlstr="
SELECT[day01],[day02],[day03],[day04],[day05],[day06],[day07],[day08],[day09],[day10],[day11],[day12],[day13],[day14]"
30sqlstr+="
[week01],[week02],[week03],[week04],[week05],[week06],[week07],[week08],[week09],[week10],[week11],[week12],[week13],[week14]"
31sqlstr+="
[week15],[week16],[week17],[week18],[week19],[week20],[week21],[week22],[week23],[week24]"
32sqlstr+="
FROM[GDS_Service].[dbo].[GDS_Service_Report_Base]orderbygroupID,id"
33//可以放在配置文件里
34stringconn=@"
Provider=SQLOLEDB.1;
uid=xijun_ke;
Password=12345678;
InitialCatalog=GDS_Service;
PersistSecurityInfo=False;
35
36m_objQryTable=(Excel.QueryTable)m_objQryTables.Add("
OLEDB;
+conn,m_objRange,sqlstr);
37
38m_objQryTable.RefreshStyle=Excel.XlCellInsertionMode.xlInsertEntireRows;
40m_objQryTable.Refresh(false);
41m_objBook.SaveAs(str_path,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Excel.XlSaveAsAccessMode.xlExclusive,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
42m_objBook.Close(false,Type.Missing,Type.Missing);
43//}
44//catch(Exceptionee)
45//{
46//mp.WriteLog(ee.ToString());
47//}
48//finally
49//{
50m_objExcel.Quit();
51GC.Collect();
52//}
53returnstr_path;
54
55}
com操作excel的一些特性操作:
range.NumberFormatLocal="
@"
//设置单元格格式为文本
range=(Range)worksheet.get_Range("
A1"
E1"
//获取Excel多个单元格区域:
本例做为Excel表头
range.Merge(0);
//单元格合并动作
worksheet.Cells[1,1]="
Excel单元格赋值"
//Excel单元格赋值
range.Font.Size=15;
//设置字体大小
range.Font.Underline=true;
//设置字体是否有下划线
range.Font.Name="
黑体"
设置字体的种类
range.HorizontalAlignment=XlHAlign.xlHAlignCenter;
//设置字体在单元格内的对其方式
range.ColumnWidth=15;
//设置单元格的宽度
range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb();
//设置单元格的背景色
range.Borders.LineStyle=1;
//设置单元格边框的粗细
range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb());
//给单元格加边框
range.EntireColumn.AutoFit();
//自动调整列宽
Range.HorizontalAlignment=xlCenter;
//文本水平居中方式
Range.VerticalAlignment=xlCenter//文本垂直居中方式
Range.WrapText=true;
//文本自动换行
Range.Interior.ColorIndex=39;
//填充颜色为淡紫色
Range.Font.Color=clBlue;
//字体颜色
xlsApp.DisplayAlerts=false;
//保存Excel的时候,不弹出是否保存的窗口直接进行保存
workbook.SaveCopyAs(temp);
/**////填入完信息之后另存到路径及文件名字excel宏操作,sheet和单元格操作:
1///&
summary&
2///讀取excel數據和插入公式
3///&
/summary&
4///&
paramname="
sender"
/param&
5///&
e"
6protectedvoidButton2_Click(objectsender,EventArgse)
7{
8DateTimet1=DateTime.Now;
9Response.Write("
10Excel.Applicationexcelkk=newExcel.Application();
11
12excelkk.Workbooks.Add(true);
13introw=2;
14DataTablemyTable=ds.Tables["
];
15for(inti=0;
myTable.Columns.Count;
16{
17excelkk.Cells[1,1+i]=myTable.Columns[i].ColumnName.ToString();
18}
19for(inti=0;
myTable.Rows.Count;
20{
21for(intj=0;
j&
j++)
22{
23excelkk.Cells[row,j+1]=myTable.Rows[i][j].ToString();
24}
25
26row++;
27}
28
29
30//取得特定單元格的值
31excelkk.Visible=true;
32this.TextBoxChange.Text=excelkk.get_Range("
Type.Missing).Text.ToString();
33//表的單元格合并
34Excel.Rangerange1=excelkk.get_Range("
D4"
35range1.Merge(Type.Missing);
36
38
40//想表格中插入求和的值
41Excel.Rangerange2=excelkk.get_Range("
B25"
42range2.Formula="
=SUM(B2:
B24)"
43range2.Calculate();
44
45//進行宏的循環應用與單元格的刪除和添加,多個單元格默認宏自動操作。
46Excel.Rangerange3=excelkk.get_Range("
E25"
47range2.AutoFill(range3,Excel.XlAutoFillType.xlFillDefault);
48//刪除表的指定行數操作
49Excel.Rangerange7=null;
50range7=excelkk.get_Range(excelkk.Cells[2,2],excelkk.Cells[4,4]);
51range7.Select();
52range7.EntireRow.Delete(Excel.XlDirection.xlUp);
53
54//獲取最大用過的行數
55Excel.Worksheetwsheet1=(Excel.Worksheet)excelkk.Worksheets.get_Item
(1);
56intn=wsheet1.UsedRange.Cells.Columns.Count;
57Response.Write(n.ToString()+"
58//MessageBox.Show(n.ToString());
59n=wsheet1.UsedRange.Cells.Rows.Count;
60Response.Write(n.ToString()+"
61//MessageBox.Show(n.ToString());
62//數據的複製
63Excel.Rangerange4=excelkk.get_Range("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作 excel 多种 方法 比较