日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

asp.net(c#) 将dbf转换为xls或wps,并将数据的列名改成中文;并判断本机是否安装office2003,2007和wps2007,2010...

發布時間:2023/12/1 C# 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 asp.net(c#) 将dbf转换为xls或wps,并将数据的列名改成中文;并判断本机是否安装office2003,2007和wps2007,2010... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

using Microsoft.Office.Interop.Excel;//轉換為excel時,需要引用此命名空間

using ET;//轉換為wps時,需要引用此命名空間
using KSO;//轉換為wps時,需要引用此命名空間
當轉換為excel時,需要引入Microsoft.Office.Interop.Excel.dll;當轉換為wps時,需要引入Interop.ET.dll,Interop.KSO.dll;

?

#region 查詢注冊表,判斷本機是否安裝office2003,2007和wps
??????? public int ExistsRegedit()
??????? {
??????????? int ifused = 0;
??????????? RegistryKey rk = Registry.LocalMachine;
??????????? RegistryKey akey = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\11.0\Excel\InstallRoot\");//查詢2003

    RegistryKey akey07 = rk.OpenSubKey(@"SOFTWARE\Microsoft\Office\12.0\Excel\InstallRoot\");//查詢2007
??????????? RegistryKey akeytwo = rk.OpenSubKey(@"SOFTWARE\Kingsoft\Office\6.0\common\");//查詢wps
??????????? //檢查本機是否安裝Office2003
??????????? if (akey != null)
??????????? {
??????????????? string file03 = akey.GetValue("Path").ToString();
??????????????? if (File.Exists(file03 + "Excel.exe"))
??????????????? {
??????????????????? ifused += 1;
??????????????? }
??????????? }

     //檢查本機是否安裝Office2007

??????????? if (akey07 != null)
??????????? {
??????????????? string file07 = akey.GetValue("Path").ToString();
??????????????? if (File.Exists(file07 + "Excel.exe"))
??????????????? {
??????????????????? ifused += 2;
??????????????? }
??????????? }

??????????? //檢查本機是否安裝wps
??????????? if (akeytwo != null)
??????????? {
??????????????? string filewps = akeytwo.GetValue("InstallRoot").ToString();
??????????????? if (File.Exists(filewps + @"\office6\et.exe"))
??????????????? {
??????????????????? ifused += 4;
??????????????? }
??????????? }
??????????? return ifused;
??????? }
??????? #endregion

?

?

#region 將DBF文件放入DataSet
??????? private DataSet DbfToDs(string my_TablePath, string my_TableName)
??????? {
??????????? //數據庫連接定義
??????????? OleDbConnection my_conn; //數據連接
??????????? OleDbDataAdapter my_Adapter;//數據適配器
??????????? DataSet my_Ds = null;
??????????? 數據庫連接
??????????? try
??????????? {
??????????????? string path = my_TablePath.Substring(0, my_TablePath.LastIndexOf("\\")) + "\\";
??????????????? string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=dBASE IV;Persist Security Info=False;";
??????????????? string my_StrSelect = "SELECT * FROM " + my_TableName;
??????????????? my_conn = new OleDbConnection(connString);
??????????????? my_Adapter = new OleDbDataAdapter(my_StrSelect, my_conn);
??????????????? my_Ds = new DataSet();

??????????????? //填充數據集
??????????????? my_Adapter.Fill(my_Ds, my_TableName);
??????????? }
??????????? catch (Exception ex)
??????????? {
??????????????? MessageBox.Show("選擇文件格式不正確,請選擇.dbf文件!", "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
??????????? }

??????????? return my_Ds;
??????? }
??????? #endregions

?

#region 把數據文件導入到.xls文件
??????? public void ExportToExcel(DataSet ds)
??????? {
??????????? if (ds.Tables.Count != 0)
??????????? {
??????????????? //創建excel文件
??????????????? Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();

??????????????? //打開已有的文件
??????????????? Microsoft.Office.Interop.Excel.Workbook xBook = myExcel.Workbooks._Open(txtPath.Text , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
??????????????? //指定要操作的sheet
??????????????? Microsoft.Office.Interop.Excel.Worksheet xSheet = (Microsoft.Office.Interop.Excel.Worksheet)xBook.Sheets[1];

??????????????? #region 改成中文列名
??????????????? xSheet.Cells[1, 1] = "程序員";

?????????????????.

      .

      .
????????????????//改成中文列名時,可將中文列名放入string[]中,然后循環此數組,將第一行改成相應的中文列名?????????????
??????????????? #endregion

??????????????? xBook.SaveAs(txtPath.Text, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

??????????????? myExcel.Visible = true;

??????????? }
??????????? else
??????????? {
??????????????? System.Windows.Forms.MessageBox.Show("No Data");
??????????? }
??????? }
??????? #endregion

?

#region 把數據文件導出為wps
??????? public void ExportToWps(DataSet ds)
??????? {
??????????? if (ds.Tables.Count > 0)
??????????? {
??????????????? eTApp = new ET.Application();
??????????????? eTApp.Visible = false;
??????????????? eTWorkBook = eTApp.Workbooks.Open(txtPath.Text, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

??????????????? eTWorkSheet = (ET.Worksheet)eTWorkBook.Worksheets[1];

??????????????? #region 改成中文列名
??????????????? eTWorkBook.ActiveSheet.Cells.set_Item(1, 1, "程序員")


??????????????? #endregion

??????????????? eTWorkBook.SaveAs(txtPath.Text, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, ETSaveAsAccessMode.etNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

??????????????? eTApp.Visible = true;

??????????? }

??????? }

??????? #endregion

當轉換成xls或者wps時,一般都是循環dataset然后將數據寫入每一個單元格,但是當數據量大時轉換速度會很慢;所以將數據放入dataset后,可以使用file.copy(文件1,文件2);這樣速度會快很多;

轉載于:https://www.cnblogs.com/scgw/archive/2011/09/19/2181145.html

總結

以上是生活随笔為你收集整理的asp.net(c#) 将dbf转换为xls或wps,并将数据的列名改成中文;并判断本机是否安装office2003,2007和wps2007,2010...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。