激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#實現文件上傳下載Excel文檔示例代碼

C#實現文件上傳下載Excel文檔示例代碼

2022-01-20 14:28流年過往 C#

這篇文章主要介紹了C#實現文件上傳下載Excel文檔示例代碼,需要的朋友可以參考下

要求

環境信息:win2008server  開發工具:vs2015 開發語言:c#

要求:

  1.點擊同步數據后接口獲取數據展示頁面同時過濾無效數據并寫入數據庫,數據可導出excel并支持分類導出

  2.excel導入確認數據,調用服務處理數據后寫入數據庫,并支持分類導出

這兩天搞了一個小功能,其他的不說了針對excel導入導出做一個小總結

導出文件

這里的文件導出是底層寫好的,個人理解有限而且畢竟屬于公司就不貼具體代碼了,簡單說一下思路

首先是建立導出excel管理類,用于管理excel文件導出的模板 樣式 每行的計算方式等等,當然需要在項目中添加該管理類的配置文件去匹配對應模板;

1.讀取對應配置文件,獲取配置文件模板信息 至于模板如何配置就不說啦xml文件操作園子里面很多篇關于這個文章

C#實現文件上傳下載Excel文檔示例代碼

2.根據xml文件定義模板id遍歷查詢到該模板,這里有緩存機制為了可能處于兩方面考慮,1,防止頻繁讀取遍歷文件從而減少性能缺失 2.弱誤刪配置文件程序不會立即停止工作,監控警報會首先暴露這個問題

C#實現文件上傳下載Excel文檔示例代碼

3.最后就是讀取指定id下面的具體導出設置,比如標題頭,上限行數,給定簡單默認值等等細節處理,同時也含有緩存機制

C#實現文件上傳下載Excel文檔示例代碼

配置文件模板管理大致上有以上幾種功能,下面就是具體數據庫導出,還是那樣不能提供具體代碼但是思路可以說一說

導出管理類需要承接很多任務,入數據庫查詢,數據過濾,導出格式控制,導出日志設置,導出預警等等

C#實現文件上傳下載Excel文檔示例代碼

其實這并不是一個簡單的excel導出工具而是一個小型的導出平臺,承接一個導出實體去設置導出的各項數據,但是還是需要開發者根據自己的需求去填寫相應的模板,導出格式,數據驗證,數據查詢方式實體承接了導出方式

(xls或者csv等等很多格式)使用者只需要寫入具體導出db信息,以及導出表名稱和配置文件以及數據驗證就可以輕松使用它完成數據導出操作

C#實現文件上傳下載Excel文檔示例代碼

并且,針對文件導出操作尤其是數據庫最好由底層實現通過response流發送到頁面執行下載,數據相對規整一些如果在頁面直接執行導出頁面有些太沉重了 畢竟這個是可以實現的

導入文件

 導入文件首先需要上傳,文件上傳至服務器指定地址之后再去針對服務器文件解析,其實原理很簡單,就是通過解析上傳的文件通過oldb方式獲取解析后的文件dataset然后在寫入數據庫,下面是一個上傳文件格式驗證

C#實現文件上傳下載Excel文檔示例代碼

具體的讀取方法就很簡單了 網上一搜一大把,不過要區分一下版本而且不同版本的excel文件行數上線不同下面貼一個我常用的excel到dataset方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
public static returnvalue readexceltodataset(string xlsfullfilename, bool ishdr, bool isimex, int limitsheetcount, bool isonlyverify)
{
 returnvalue returnvalue = new returnvalue();
 string fileext = uploadfileutils.getfileext(xlsfullfilename);
 if (string.isnullorempty(fileext) || !stringutils.isinlimitstr("xls,xlsx", fileext))
 {
  returnvalue.haserror = true;
  returnvalue.returncode = 1;
  returnvalue.message = "無效excel文件后綴";
  return returnvalue;
 }
 if (!file.exists(xlsfullfilename))
 {
  returnvalue.haserror = true;
  returnvalue.returncode = 2;
  returnvalue.message = "文件不存在";
  return returnvalue;
 }
 stringbuilder stringbuilder = new stringbuilder();
 string str;
 if ("xlsx".equals(fileext, stringcomparison.currentcultureignorecase))
 {
  stringbuilder.append("provider=microsoft.ace.oledb.12.0");
  str = "excel 12.0;";
 }
 else
 {
  stringbuilder.append("provider=microsoft.jet.oledb.4.0");
  str = "excel 8.0;";
 }
 stringbuilder.append(";data source=" + xlsfullfilename);
 stringbuilder.append(";extended properties=\"" + str);
 if (ishdr)
 {
  stringbuilder.append(";hdr=yes");
 }
 if (isimex)
 {
  stringbuilder.append(";imex=1");
 }
 stringbuilder.append("\"");
 excelutils.log.debug(stringbuilder.tostring());
 oledbconnection oledbconnection = new oledbconnection(stringbuilder.tostring());
 try
 {
  oledbconnection.open();
  datatable oledbschematable = oledbconnection.getoledbschematable(oledbschemaguid.tables, new object[]
  {
   null,
   null,
   null,
   "table"
  });
  if (oledbschematable == null || oledbschematable.rows.count == 0)
  {
   returnvalue.haserror = true;
   returnvalue.returncode = 3;
   returnvalue.message = "讀取不到sheet的信息";
   returnvalue result = returnvalue;
   return result;
  }
  if (isonlyverify)
  {
   returnvalue.haserror = false;
   returnvalue.message = "讀取sheet信息正確";
   returnvalue.putvalue("dtsheet", oledbschematable);
   returnvalue result = returnvalue;
   return result;
  }
  int num = oledbschematable.rows.count;
  if (limitsheetcount > 0 && limitsheetcount < oledbschematable.rows.count)
  {
   num = limitsheetcount;
  }
  string[] array = new string[num];
  for (int i = 0; i < num; i++)
  {
   array[i] = oledbschematable.rows[i]["table_name"].tostring();
  }
  dataset dataset = new dataset();
  for (int j = 0; j < num; j++)
  {
   string text = "select * from [" + array[j] + "]";
   excelutils.log.debug(text);
   oledbcommand selectcommand = new oledbcommand(text, oledbconnection);
   oledbdataadapter oledbdataadapter = new oledbdataadapter(selectcommand);
   datatable datatable = new datatable(array[j]);
   oledbdataadapter.fill(datatable);
   dataset.tables.add(datatable);
  }
  returnvalue.haserror = false;
  returnvalue.putvalue("dtsheet", oledbschematable);
  returnvalue.putvalue("arrtablename", array);
  returnvalue.returnobject = dataset;
  returnvalue.message = "讀取成功";
 }
 catch (exception ex)
 {
  returnvalue.haserror = true;
  returnvalue.returncode = -100;
  returnvalue.returnexception = ex;
  returnvalue.message = ex.message;
  excelutils.log.warnformat("readexceltodataset sbconn={0} 出錯,原因:{1}", stringbuilder.tostring(), ex.message);
 }
 finally
 {
  oledbconnection.close();
 }
 return returnvalue;
}

哦對 注意一下,如果用導出方法導出xls文件再用導入方法導入該文件會報錯的喲,我是默認保存.csv 實際就為了確定文件是否被使用過,所以當你的excel文件能導出單相同文件卻導入不了 請嘗試一下重新保存一下.xls格式 在進行導入

原文鏈接:http://www.cnblogs.com/workstation-liunianguowang/p/6606104.html

延伸 · 閱讀

精彩推薦
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
主站蜘蛛池模板: 欧美性生活免费视频 | 91色琪琪电影亚洲精品久久 | 成年人性视频 | 久草在线综合网 | 免费观看一级 | 美女久久久久久久久 | 国产在线色 | 日本黄色网战 | 一级做受大片免费视频 | 久久精品亚洲一区二区 | 在线高清中文字幕 | 欧美一级黄色录像片 | 美女黄影院 | 蜜桃麻豆视频 | 欧美18—19sex性hd | 国产一级aa大片毛片 | 中文字幕在线观看日韩 | 日本黄色一级视频 | 欧美视频在线一区二区三区 | 午夜精品成人一区二区 | 久久久久日本精品一区二区三区 | 成人综合一区二区 | 欧美成人一区免费视频 | 欧美日韩国产成人在线 | 99久久精品国产导航 | 久久影城| 久草视频福利在线观看 | 欧美成年私人网站 | 色无极影院亚洲 | 最新在线黄色网址 | 九色新网址| 国产精品久久久久久久久久10秀 | 日日噜噜噜夜夜狠狠久久蜜桃 | 极品销魂一区二区三区 | 青草久久久久 | 欧美a级大胆视频 | 亚洲成人在线免费 | 一级黄色免费 | 成年人高清视频在线观看 | 青青操精品 | 免费国产在线视频 |