Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
用 Access 可以很好地管理各種數據, 但是在實際應用中, 許多數據并不是使用 Access 來收集的, 此時, 為了使用 Access 管理其他軟件或程序收集到的數據, 可以將收集到的數據導入 Access 中。
在 Access 數據庫中, 可以將其他的 Access 數據庫、 ODBC 數據庫、 Excel 表格、 HTML 文檔和文本文件等外部數據導入當前數據庫中, 下面將分別介紹。
如果要將其他 Access 數據庫導入數據庫對象, 既可以使用復制和粘貼的方法, 也可以使用【導入向導】來完成。 使用【導入向導】 可以在不打開 Access 的情況下完成, 其具體操作步驟如下。
Step 01 打開"銷售管理數據 .accdb",單擊【外部數據】 選項卡【導入并鏈接】 組中的【新數據源】 下拉按鈕,在彈出的下拉菜單中選擇【從數據庫】選項,在彈出的級聯菜單中選擇【Access】 選項, 如圖所示。
Step 02 打開【獲取外部數據 -Access數據庫】 對話框, 單擊【文件名】文本框右側的【瀏覽】 按鈕, 如圖所示。
Step 03 打開【打開】 對話框,選擇要導入的數據庫,單擊【打開】按鈕,如圖所示。
Step 04 返回【獲取外部數據 -Access數據庫】 對話框,選中【將表、 查詢、 窗體、 報表、 宏和模塊導入當前數據庫】單選按鈕,單擊【確定】按鈕, 如圖所示。
技術看板
選中【將表、 查詢、 窗體、 報表、宏和模塊導入當前數據庫】單選按鈕,表示導入后的對象與源對象是獨立的,沒有任何關系。 如果選中【通過創建鏈接表來鏈接到數據源】 單選按鈕,會在當前數據庫中創建一個鏈接表,鏈接到源數據庫對象上, 此鏈接表的改動是雙向的, 無論修改源對象還是當前數據庫對象, 都會同步反映給雙方。 在 Access 中, 利用該鏈接功能,可以實現文件的共享。
Step 05 打開【導入對象】 對話框, 在6 個選項卡中分別顯示了源數據庫中的各個對象, 選擇【表】 選項卡中的【年度銷售記錄】 選項,單擊【確定】 按鈕如圖所示。
Step 06 返回【獲取外部數據 -Access數據庫】 對話框,選中【保存導入步驟】 復選框; 在【另存為】文本框中輸入名稱,單擊【保存導入】 按鈕, 如圖所示。
Step 07 操作完成后, 即可導入選擇的數據庫, 如圖所示。
對于一般用戶而言, 對 Excel 的熟悉程序遠遠高于 Access, 尤其是在操作表格數據時, Excel 的界面更加直觀, 操作也更為簡潔。 所以, 用戶可以先在 Excel 中編輯好數據, 然后將其導入 Access 中, 從而方便快捷地制作表對象, 具體操作步驟如下。
Step 01 打開"銷售管理數據 .accdb",單擊【外部數據】 選項卡【導入并鏈接】 組中的【新數據源】下拉按鈕,在彈出的下拉菜單中選擇【從文件】選項,在彈出的級聯菜單中選擇【Excel】 選項, 如圖所示。
Step 02 打開【獲取外部數據 -Excel 電子表格】 對話框, 單擊【文件名】文本框右側的【瀏覽】 按鈕, 如圖所示。
Step 03 打開【打開】 對話框,選擇要導入的 Excel電子表格,單擊【打開】 按鈕, 如圖所示。
Step 04 返回【獲取外部數據 -Excel 電子表格】 對話框,選中【將源數據導入當前數據庫的新表中】 單選按鈕,單擊【確定】按鈕,如圖所示。
Step 05 打開【導入數據表向導】對話框,選中【顯示工作表】 單選按鈕,單擊【下一步】 按鈕,如圖所示。
Step 06 在【導入數據表向導】 對話框中,選中【第一行包含列標題】復選框,單擊【下一步】 按鈕,如圖所示。
Step 07 在【導入數據表向導】 對話框中的【字段選項】 欄分別指定每個字段的名稱、 數據類型、 索引等信息, 如指定【銷售編號】字段的【索引】為【有(無重復)】,單擊【下一步】 按鈕,如圖所示。
Step 08 在【導入數據表向導】 對話框中,選中【我自己選擇主鍵】 單選按鈕,在右側的下拉列表框中選擇【銷售編號】 選項,單擊【下一步】 按鈕, 如圖所示。
Step 09 在【導入數據表向導】 對話框中, 在【導入到表】 文本框中指定表名稱, 如保持默認名稱, 單擊【完成】 按鈕, 如圖所示。
Step 10 返回【獲取外部數據 -Excel 電子表格】 對話框,選中【保存導入步驟】 復選框,在【另存為】文本框中輸入名稱,單擊【保存導入】 按鈕, 如圖所示。
Step 11 操作完成后, 即可導入選擇的Excel 電子表格, 并在數據庫中創建一個新表, 如圖所示。
在工作中, 需要使用文本文件導出的數據很多, 如考勤文件、 企業到企業(B2B) 的數據傳輸等。 如果有需要, 也可以將這些文本文件導入Access數據庫中, 具體操作步驟如下。
Step 01 打開"銷售管理數據 .accdb",單擊【外部數據】 選項卡【導入并鏈接】 組中的【新數據源】 下拉按鈕,在彈出的下拉菜單中選擇【從文件】選項,在彈出的級聯菜單中選擇【文本文件】 選項, 如圖所示。
Step 02 打開【獲取外部數據 - 文本文件】 對話框, 單擊【文件名】 文本框右側的【瀏覽】按鈕, 如圖所示。
Step 03 打開【打開】 對話框,選擇要導入的文本文件,單擊【打開】按鈕, 如圖所示。
Step 04 返回【獲取外部數據 - 文本文件】 對話框,選中【將源數據導入當前數據庫的新表中】單選按鈕,單擊【確定】 按鈕, 如圖所示。
Step 05 打開【導入文本向導】 對話框,選中【帶分隔符】 單選按鈕,單擊【下一步】 按鈕, 如圖所示。
技能拓展—導入固定寬度的文本文件
如果文本文件是使用固定寬度分隔開, 可以選中【固定寬度】單選按鈕,系統會根據寬度創建分隔線。 用戶也可以對分隔線執行添加、移動等操作,如圖所示。
Step 06 在【導入文本向導】 對話框中的【請選擇字段分隔符】 欄選中【逗號】 單選按鈕, 選中【第一行包含字段名稱】復選框,單擊【下一步】 按鈕, 如圖所示。
Step 07 在【導入文本向導】 對話框中的【字段選項】 欄設置各字段的名稱和數據類型, 單擊【下一步】按鈕, 如圖所示。
Step 08 在【導入文本向導】 對話框中,選中【讓 Access 添加主鍵】 單選按鈕,單擊【下一步】 按鈕, 如圖所示。
Step 09 在【導入文本向導】 對話框中的【導入到表】 文本框中輸入文件名,單擊【完成】 按鈕, 如圖所示。
Step 10 返回【獲取外部數據 - 文本文件】 對話框, 直接單擊【關閉】 按鈕,如圖所示。
Step 11 操作完成后, 即可導入選擇的文本文件, 并在數據庫中創建一個新表, 如圖所示。
臺拖一個Gridview,在拖一個導出excel的按鈕,給這個按鈕添加事件
后臺代碼:
using BLL;
using Model;
namespace Web
{
public partial class ExcelOperate : System.Web.UI.Page
{
private StudentBLL bll = new StudentBLL();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind();
}
}
//綁定數據
private void Bind()
{
GridView1.DataSource = bll.GetAllStu(null);
GridView1.DataBind();
}
#region 導出到excel
//導出excel
protected void btnExcelout_Click(object sender, EventArgs e)
{
string style = @"<style> .text { mso-number-format:\@; } </script> "; //設置格式
Response.ClearContent();
Response.ContentEncoding = Encoding.GetEncoding("gbk");
Response.AddHeader("content-disposition", "attachment;filename=ouput.xls");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
GridView1.RenderControl(htw);
Response.Write(style);//注意
Response.Write(sw.ToString());
Response.End();
}
//注意:必須覆蓋此方法
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
//解決數字字符串顯示不完全
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
// e.Row.Cells[3].Attributes.Add("class", "text");//在數據綁定中設置格式
//哪一列需要顯示文本的,加上下面這句話即可
e.Row.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
}
#endregion
}
}
頁面效果:
導入Excel并保存到數據庫:
前臺需要拖一個FileUpload上傳控件,一個導入excel按鈕,給其添加事件:
//導入excel數據
protected void btnExcelIn_Click(object sender, EventArgs e)
{
string filepath = string.Empty;
string getErrormg = string.Empty;
DataTable dt=new DataTable();
if (!fuFile.HasFile)
{
Response.Write("<script>alert('請選擇你要導入的Excel文件');</script>");
return;
}
//獲取文件的后綴名
string fileExt = System.IO.Path.GetExtension(fuFile.FileName);
if (fileExt != ".xls")
{
Response.Write("<script>alert('文件類型錯誤!');</script>");
return;
}
//獲取絕對路徑
filepath = fuFile.PostedFile.FileName;
string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";Data Source=" + filepath;
OleDbConnection excelCon = new OleDbConnection(conn);
//Excel文件里面工作表名 默認為Sheet1,后面需要加上$符號[工作表名稱$]切記,不然會報錯
OleDbDataAdapter odda = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", excelCon);
try
{
odda.Fill(dt);
}
catch (Exception ex)
{
Response.Write(ex.Message);
Response.Write("<script>alert('" + ex.Message + "!')</script>");
}
finally
{
excelCon.Close();
excelCon.Dispose();
}
//將數據寫到數據庫里面
try
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Studnet stu=new Studnet();
stu.C_id = Convert.ToInt32(dt.Rows[i]["c_id"]);
stu.No = dt.Rows[i]["no"].ToString();
stu.Name = dt.Rows[i]["name"].ToString();
stu.Gender = dt.Rows[i]["gender"].ToString() == "男" ? true : false;
stu.Age = Convert.ToInt32(dt.Rows[i]["age"].ToString());
bll.InsertStu(stu);
}
}
catch (Exception ex)
{
getErrormg = ex.Message;
Response.Write(ex.Message);
}
if (getErrormg == "")
{
Response.Write("<script>alert('導入Excel文件成功!')</script>");
Bind();
}
else { Response.Write("<script>alert('導入Excel文件失敗!')</script>"); }
}
Excel和導入后的頁面效果:
數據庫在導入excel數據之前和時候的效果:
這里要注意幾個地方,一般導出excel的時候,數字文本會把前面的0都省略掉了,這里需要注意:紅色代碼片段,導入的時候,也有個***紅紅紅色***標記碼塊要注意
以下是前臺完整代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ExcelOperate.aspx.cs" Inherits="Web.ExcelOperate" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"></asp:GridView>
<br />
<asp:Button ID="btnExcelout" runat="server" OnClick="btnExcelout_Click" Text="導出到Excel" />
<br />
<asp:FileUpload ID="fuFile" runat="server" />
<asp:Button ID="btnExcelIn" runat="server" OnClick="btnExcelIn_Click" Text="導入Excel數據" />
</div>
</form>
</body>
</html>
以下是后臺完整代碼:
ython可以使用各種各樣的文件作為數據源:
平面文件--txt,csv - 很簡單,可以使用numpy或pandas導入。
numpy.recfromcsv - 加載存儲在逗號分隔文件中的ASCII數據。返回的數組是一個記錄數組(如果usemask = False)或masked記錄數組(如果usemask = True)。Python示例代碼:
data = np.recfromcsv(file)
numpy.loadtxt - 此函數旨在成為簡單格式化文件的快速閱讀器。該genfromtxt函數提供了更復雜的處理,例如,缺失值的行。
data = np.loadtxt('file.csv', delimiter=',', skiprows=1, usecols=[0,2])
numpy.genfromtxt - 從文本文件加載數據,并按指定處理缺失值。是更復雜的函數,有很多參數來控制你的導入。
data = np.genfromtxt('titanic.csv', delimiter=',', names=True, dtype=None)
使用pandas更容易 - 一行,你準備好DataFrame中的文件。還支持可選地將文件迭代或分解為塊。
data = pd.read_csv(file, nrows=5, header=None, sep='\t', comment='#', na_values='Nothing')
它用于序列化和反序列化Python對象結構。可以對python中的任何對象進行pickle,以便將其保存在磁盤上。pickle的作用是在將對象寫入文件之前先將其“序列化”。Pickling是一種將python對象(list,dict等)轉換為字符流的方法。這個想法是這個字符流包含在另一個python腳本中重建對象所需的所有信息。下面的代碼將打印一個在某處創建并存儲在文件中的字典 - 非常酷,不是嗎?
import pickle with open('data.pkl', 'rb') as file: d = pickle.load(file) print(d)
與pandas.read_excel將Excel表讀入panda DataFrame中,并進行了大量的自定義導入數據,這個函數的文檔很清楚,你可以用Excel文件做任何你想做的事情。
df = pd.read_excel('file.xlsx', sheet_name='sheet1')
SAS代表統計分析軟件。SAS數據集包含組織為觀察(行)和變量(列)表的數據值。要打開此類文件并從中導入數據,請看下面的Python代碼示例:
from sas7bdat import SAS7BDAT with SAS7BDAT('some_data.sas7bdat') as file: df_sas = file.to_data_frame()
Stata是一款強大的統計軟件,可以讓用戶分析、管理和生成數據的圖形化可視化。它主要被經濟學、生物醫學和政治學領域的研究人員用于研究數據模式。存儲在.dta文件中的數據,導入它的最好方法是pandas.read_stata
df = pd.read_stata('file.dta')
分層數據格式(HDF)是一組文件格式(HDF4, HDF5),用于存儲和組織大量數據。HDF5是一個獨特的技術套件,可以管理非常大和復雜的數據集合。HDF5簡化了文件結構,只包含兩種主要類型的對象:
這就產生了一種真正的層次化、文件系統式的數據格式。實際上,HDF5文件中的資源甚至可以使用類似/ path / to / resource訪問HDF5文件中的資源。元數據以用戶定義的、附加到Groups和Datasets的命名屬性的形式存儲。然后,可以使用數據集、組和屬性構建表示圖像和表的更復雜的存儲api。
要導入HDF5文件,我們需要h5py庫。下面的Python代碼示例使我更輕松,完全可以理解。
import h5py # Load file: data = h5py.File('file.hdf5', 'r') # Print the keys of the file for key in data.keys(): print(key) # Now when we know the keys we can get the HDF5 group group = data['group_name'] # Going one level deeper, check out keys of group for key in group.keys(): print(key) # And so on and so on
很多人使用MATLAB并將數據存儲在.mat文件中。那些文件是什么?這些文件包含在MATLAB工作空間中分配給它們的變量和對象列表。將它作為字典導入Python并不奇怪,其中鍵是MATLAB變量和值 - 分配給這些變量的對象。要編寫和讀取MATLAB文件,請使用scipy.io包。
import scipy.io mat = scipy.io.loadmat('some_project.mat') print(mat.keys())
使用驅動程序連接到數據庫,我們可以直接從那里獲取數據。通常它意味著:創建連接,連接,運行查詢,獲取數據,關閉連接。它可以一步一步地完成,但在pandas 中只需要sqlalchemy包創建的連接。下面是連接到sqlite數據庫引擎并從中獲取數據的示例:
from sqlalchemy import create_engine import pandas as pd # Create engine engine = create_engine('sqlite:///localdb.sqlite') # Execute query and store records in DataFrame df = pd.read_sql_query("select * from table", engine)
首先,如果我們有一個文件的URL,我們可以使用標準的pandas.read_csv / pandas.read_excel函數在參數“file =”中指定它
df = pd.read_csv('https://www.example.com/data.csv', sep=';')
除此之外,要從Web獲取數據,我們需要使用HTTP協議,特別是GET方法。并且requests 包做了這個令人難以置信的工作。要從requests.get收到的響應中訪問文本,我們只需要使用方法.text。
import requests r = requests.get('http://www.example.com/some_html_page') print(r.text)
r.text將為我們提供一個包含所有html標簽的網頁 - 不是很有用,不是嗎?我們有一個BeautifulSoup包,可以解析HTML并提取我們需要的信息,在本例中是所有超鏈接(繼續前面的例子):
from bs4 import BeautifulSoup html_doc = r.text # Create a BeautifulSoup object from the HTML soup = BeautifulSoup(html_doc) # Find all 'a' tags (which define hyperlinks) a_tags = soup.find_all('a') # Print the URLs to the shell for link in a_tags: print(link.get('href'))
在計算機編程中,應用程序編程接口(API)是一組子例程定義,通信協議和用于構建軟件的工具。一般而言,它是一組明確定義的各種組件之間的通信方法。有許多不同的API,首先必須做的是檢查文檔,但事實是幾乎所有API都以JSON格式返回數據。requests 包將再次幫助我們。(我們必須發送HTTP GET請求以從API獲取數據)。
import requests r = requests.get('https://www.example.com/some_endpoint') # Decode the JSON data into a dictionary: json_data = r.json() # Print each key-value pair in json_data for k in json_data.keys(): print(k + ': ', json_data[k])
我們可以看到,數據無處不在,我們必須知道獲取它的所有方法
*請認真填寫需求信息,我們會在24小時內與您取得聯系。