如何更快的将数据导入Excel

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-15
超级简单:如何更快的将数据导入Excel

基本方法 使用基本的拷贝方法将会花费大量的时间。使用文件文件流或者拷贝对象的方法将比基本方法快很多。 你必须添加一个Excel COM Object 的引用到你的应用程序之中。我将要声明两个对象,Ex为Excel.Application类型。Ws为Excel.Worksheet类型 ,然后设置Ws为workbook的第一个worksheet。 我们将写代码去循环Table每一列的标题来显示标题。 我们使用列(索引),去要检索列的标题,Caption或者ColumnName属性。 对于全部的数据,我们将要使用两个循环,一个循环row,另外一个循环column代码使用StreamWriter:这个方法比较简短而且是将数据导入如何类型的文件一种比较快方式在这个方法中,我将使用 System.IO 命名空间,我将编程去指定的.xls 或者 .doc等扩展来直接创建一个的文件路径。编码以文件的路径开始,这个路径是Excel文件被创建和数据存储的地方。现在,声明一个指定了路径的IO.StreamWriter对象。在这种方法中,每行的行值/列值被添加到以“|”作为分隔符的字符串中。现在,创建的文件包含以 "|" 分割的单列数据(CSV格式)。

1、基本要领:一格一格地拷贝
2、运用文件流StreamWriter对象:将流写入文件
3、拷贝对象的要领:将数据复制到数组,然后直接粘贴到Excel的workbook。
基本要领运用基本的拷贝要领将会花费大量的时间。运用文件文件流或者拷贝对象的要领将比基本要领快许多。
你必须添加一个Excel COM Object 的引用到你的运用 程序之中。我将要声明两个对象,Ex为Excel.Application类型。Ws为Excel.Worksheet类型 ,然后配置 Ws为workbook的第一个worksheet。
咱们将写代码去循环Table每一列的标题来显示标题。
咱们运用列(索引),去要检索列的标题,Caption或者ColumnName属性。
对于所有的数据,咱们将要运用两个循环,一个循环row,另外一个循环column代码Microsoft.Office.Interop.Excel.Application Ex = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Worksheet Ws ;
Ex.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Ws= (Microsoft.Office.Interop.Excel.Worksheet)Ex.Worksheets[1];
int Row = 0;
int Col = 0;int i = 0;int j = 0;pb.Maximum = Ds.Tables[0].Rows.Count;Row = 1;Col = 1;//'For Heading
lblCount.Text = "Generating Heading.";
this.Refresh();
for (i = 0; i <= Ds.Tables[0].Columns.Count - 1; i++){Ws.Cells[Row, Col] = Ds.Tables[0].Columns[i].Caption;Col += 1;}Row = 2;Col = 1;pb1.Maximum = Ds.Tables[0].Columns.Count;
lblCount.Text = "Preparing for Exp ort Data.";
for (i = 0; i <= Ds.Tables[0].Rows.Count - 1; i++){////FOR ALL DATA//pb1.Value = 0;
for (j = 0; j <= Ds.Tables[0].Columns.Count - 1; j++){Ws.Cells[Row, Col] = Ds.Tables[0].Rows[i][j].ToString();Col += 1;pb1.Value += 1;}//'If data is more than 65500 then set ws to next sheet
if (Row == 65500){Row = 1;Ws = (Microsoft.Office.Interop.Excel.Worksheet)Ex.Worksheets[2];}Col = 1;Row += 1;lblCount.Text = i + 1 + " : Exp orted";
lblCount.Refresh();

这篇文章将介绍3种方式将数据导入Excel:
1、基本方法:一格一格地拷贝
2、使用文件流StreamWriter对象:将流写入文件
3、拷贝对象的方法:将数据复制到数组,然后直接粘贴到Excel的workbook。
基本方法
使用基本的拷贝方法将会花费大量的时间。使用文件文件流或者拷贝对象的方法将比基本方法快很多。
你必须添加一个Excel COM Object 的引用到你的应用程序之中。我将要声明两个对象,Ex为Excel.Application类型。Ws为Excel.Worksheet类型 ,然后设置Ws为workbook的第一个worksheet。
我们将写代码去循环Table每一列的标题来显示标题。
我们使用列(索引),去要检索列的标题,Caption或者ColumnName属性。
对于全部的数据,我们将要使用两个循环,一个循环row,另外一个循环column
代码
Microsoft.Office.Interop.Excel.Application Ex = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Worksheet Ws ;
Ex.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Ws= (Microsoft.Office.Interop.Excel.Worksheet)Ex.Worksheets[1];
int Row = 0;
int Col = 0;
int i = 0;
int j = 0;
pb.Maximum = Ds.Tables[0].Rows.Count;
Row = 1;
Col = 1;
//'For Heading
lblCount.Text = "Generating Heading.";
this.Refresh();
for (i = 0; i <= Ds.Tables[0].Columns.Count - 1; i++)
{
Ws.Cells[Row, Col] = Ds.Tables[0].Columns[i].Caption;
Col += 1;
}
Row = 2;
Col = 1;
pb1.Maximum = Ds.Tables[0].Columns.Count;
lblCount.Text = "Preparing for Export Data.";
for (i = 0; i <= Ds.Tables[0].Rows.Count - 1; i++)
{
//
//FOR ALL DATA
//

pb1.Value = 0;
for (j = 0; j <= Ds.Tables[0].Columns.Count - 1; j++)
{
Ws.Cells[Row, Col] = Ds.Tables[0].Rows[i][j].ToString();
Col += 1;
pb1.Value += 1;
}
//'If data is more than 65500 then set ws to next sheet
if (Row == 65500)
{
Row = 1;
Ws = (Microsoft.Office.Interop.Excel.Worksheet)Ex.Worksheets[2];
}

Col = 1;
Row += 1;
lblCount.Text = i + 1 + " : Exported";
lblCount.Refresh();
pb.Value += 1;
}
pb.Value = 0;
Ex.Visible = true;
MessageBox.Show(Ds.Tables[0].Rows.Count + " : Records Exported. ");
Ex.Visible = true;
Ex.Quit();
Ex = null;
Ws = null;
使用StreamWriter:
这个方法比较简短而且是将数据导入如何类型的文件一种比较快方式
在这个方法中,我将使用 System.IO 命名空间,我将编程去指定的.xls 或者 .doc等扩展来直接创建一个的文件路径。
编码以文件的路径开始,这个路径是Excel文件被创建和数据存储的地方。现在,声明一个指定了路径的IO.StreamWriter对象。在这种方法中,每行的行值/列值被添加到以“|”作为分隔符的字符串中。现在,创建的文件包含以 "|" 分割的单列数据(CSV格式)。
代码
string filePath = "c:\\SystemIO_Exported_Data_AsOn_" + DateTime.Now.ToShortDateString() + ".xls";

//Stream Writer object to write the stream to file
StreamWriter writer = new StreamWriter(File.Create(filePath));

string str = string.Empty;

//'For Heading
lblCount.Text = "Generating Heading.";
this.Refresh();
for (int i = 0; i <= Ds.Tables[0].Columns.Count - 1; i++)
{
str += Ds.Tables[0].Columns[i].Caption +Constants.vbTab;
}
//Write stream to file adding a new line to stream
str += Microsoft.VisualBasic.Constants.vbNewLine;
writer.Write(str);
writer.Flush();
pb.Maximum = Ds.Tables[0].Rows.Count + 1;
foreach (DataRow dRow in Ds.Tables[0].Rows)
{

str = "";
for (int col = 0; col <= Ds.Tables[0].Columns.Count - 1; col++)
{
string STR1 = "";
char c = Strings.Chr(32);
//char[] sep = " ";
string[] str2 = null;
str2 = dRow[col].ToString().Split(' ');
for (int z = 0; z <= str2.Length - 1; z++)
{
//replacing all spaces and tabs with '|' (pipe sign)
string y = str2[z].ToString().Replace(Strings.Chr(32), ' ').Replace(Strings.Chr(13), ' ').Replace(Strings.Chr(10), ' ').Replace(Strings.Chr(9), ' ').Replace("|", " ");
STR1 += y + " ";
}
str += STR1 + "| ";
pb.Value += 1;
}
str += Constants.vbNewLine;
writer.Write(str);
writer.Flush();
pb.Value = 0;
}
//Close the stream writer object
writer.Close();
pb.Value = 0;
MessageBox.Show("Data Exported Successfully.");
对象拷贝的方法:
这是另外一中将数据导入Excel的方法。
在代码中,我们创建了二维数组:object[,] rawData = new object[dt.Rows.Count + 1, dt.Columns.Count]来包含数据表中的数据
一旦数据被存储在一个数组当中,它将通过Excel Worksheet 的get_Range().value方法 ,将数据粘贴到一个 excel worksheet 之中。
代码
if (Ds.Tables.Count > 3)
{
MessageBox.Show("There Are More than 3 data table. Data can not be exported.","提示");
return;
}
int sheetIndex = 0;
Microsoft.Office.Interop.Excel.Application Ex = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Worksheet Ws;
Microsoft.Office.Interop.Excel.Workbook Wb = Ex.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Ws = (Microsoft.Office.Interop.Excel.Worksheet)Ex.Worksheets[1];

// Copy each DataTable as a new Sheet
foreach (System.Data.DataTable dt in Ds.Tables)
{
//On Error Resume Next
int col = 0;
int row = 0;
// Copy the DataTable to an object array
object[,] rawData = new object[dt.Rows.Count + 1, dt.Columns.Count];
lblCount.Text = "Copying Columns Name.";
this.Refresh();
// Copy the column names to the first row of the object array
pb1.Maximum = dt.Columns.Count + 1;
pb1.Value = 0;
for (col = 0; col <= dt.Columns.Count - 1; col++)
{
rawData[0, col] = dt.Columns[col].ColumnName.ToUpper();
pb1.Value += 1;
}
lblCount.Text = "Copying Data";
this.Refresh();
pb1.Value = 0;
// Copy the values to the object array
pb.Maximum = dt.Rows.Count + 1;
pb.Value = 0;
for (col = 0; col <= dt.Columns.Count - 1; col++)
{
for (row = 0; row <= dt.Rows.Count - 1; row++)
{
rawData[row + 1, col] = dt.Rows[row].ItemArray[col];
pb.Value += 1;
}
pb.Value = 0;
pb1.Value += 1;
}
pb.Value = 0;
pb1.Value = 0;
lblCount.Text = "";
this.Refresh();
// Calculate the final column letter
string finalColLetter = string.Empty;
finalColLetter = ExcelColName(dt.Columns.Count);
//Generate Excel Column Name (Column ID)

sheetIndex += 1;
Ws = (Microsoft.Office.Interop.Excel.Worksheet)Wb.Worksheets[sheetIndex];
Ws.Name = dt.TableName;
string excelRange = string.Format("A1:{0}{1}", finalColLetter, dt.Rows.Count + 1);

Ws.get_Range(excelRange, Type.Missing).Value2 = rawData;
Ws = null;
}

Wb.SaveAs("C:\\ExportedDataUsingObjectPastingMethod.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
Wb.Close(true, Type.Missing, Type.Missing);
Wb = null;
// Release the Application object
Ex.Quit();
Ex = null;
// Collect the unreferenced objects
GC.Collect();
Interaction.MsgBox("Exported Successfully.", MsgBoxStyle.Information,"提示");
我使用一个函数去找excel worksheet的列名

详细讲解,在低代码平台上如何快速进行Excel数据的导出导入?



  • 怎么把word里的数据导入到excel
    答:3.怎么把Word的数据导入EXCEL的表格中 复制并粘贴,然后进行必要的整理。如果在Word中是通过Excel表格进行的插入设计,可以直接复制到Excel工作表中,并会保留原有的公式。当然如果要将Word中的整个工作表粘贴到Excel中,通常需粘贴到A1单元格或者R1C1位置,否则会出现如图提示:4.如何将word表格数据导入到...
  • 如何将数据导入excel
    答:工具/原料:机械革命S3 Pro Windows10 Excel2019 1、点击数据 点击菜单栏上“数据”视图。2、选择从文本获取 点击“获取数据-自文件-从文本”。3、选择文本文件 打开资源管理器,找到要导入的txt的数据,点击插入。4、加载数据 点击下方选项“加载数据”。5、完成导入 txt的数据成功导入到表格中。
  • 怎么将文本数据导入到excel表格中
    答:有时需要将文本数据制作成excel电子表格,如何快速将大量数据导入excel呢,数据导入法既快捷又准确。现在小编介绍给大家如何在win10系统中如何快速导入文本数据到excel表格的方法。打开excel表格文件,在菜单栏中选择“数据”选项卡,如图:点击“数据”选项卡左侧的“获取外部数据”下拉菜单,选择菜单中的“自...
  • 怎么把word的内容粘贴到excel表中
    答:注:在粘贴数据之前,请确保粘贴区域为空。Word 表格单元格中的数据将替换粘贴区域内工作表单元格中的任何现有数据。 2. 如何将数据粘贴到excel中去 关于Txt文件转化成电子表格: 办法3种,复制、导入和直接打开: 1. 正常情况下经过整理的数据不会进入到一个单元格里,若干进入一个单元格,一定是双击后产生这种现象...
  • 如何将网页中的表格快速复制到excel中
    答:此时表格会变红,这就表示它被选中了,再单击一下鼠标右键,接着在出现的快捷菜单中依次选择“Export to Excel→Create New Table”命令。如此一来,网页中的表格就直接导入Excel中了。以上两种方法都可以将将网页中的表格数据快速导入到Excel软件中,相比纯粹的复制粘贴好用许多。
  • 如何快速导入EXCEL
    答:打开excel新建一个工作表,单击选择excel菜单栏中的“数据”选项卡,选择“自文本”,在弹出的对话框中找到需要导入的文本文件,点击“确定”。在弹出的“文本导入向导”对话框中,选择“分隔符号”,然后点击“下一步”第二步,我们可以选择不同的分隔符号,并能实时预览分隔效果。因为我们的文本文件是用...
  • 如何将大量数据从txt文件导入Excel?
    答:如果将大量数据从txt文件导入Excel时会丢失数据,可以尝试以下方法:1. 使用文本导入向导:在Excel中选择"数据"选项卡,然后点击"从文本"。在文本导入向导中,选择txt文件并按照向导指示进行设置,确保选择正确的分隔符和数据格式。2. 将txt文件保存为CSV格式:打开txt文件,选择"文件" > "另存为",将...
  • 如何在电脑上从网站将外部数据导入到Excel表格中?
    答:相信很多小伙伴在日常办公中都会用到Excel,在其中如何才能导入网页表格数据呢?方法很简单,下面小编就来为大家介绍。具体如下:1. 首先,打开我们想要导入Excel的网页表格,复制网址。2. 接着,打开电脑上的Excel,点击页面上端的“数据”,在其下菜单栏中找到“获取外部数据”栏,点击其中的“自网站”...
  • 怎样将网页中的表格导入到excel中
    答:此时表格会变红,这就表示它被选中了,再单击一下鼠标右键,接着在出现的快捷菜单中依次选择“Export to Excel→Create New Table”命令。如此一来,网页中的表格就直接导入Excel中了。以上两种方法都可以将将网页中的表格数据快速导入到Excel软件中,相比纯粹的复制粘贴好用许多。
  • 如何将文本数据导入到excel中 excel导入数据
    答:我们在使用excel处理数据信息的时候,往往需要将数据从外部文件导入到excel中处理,下面介绍下如何导入数据 首先准备好数据文件,数据信息按照一定的格式分隔,比如| 打开excel文本编辑器,点击工具栏上的数据选项卡功能按钮 然后在数据选项菜单界面中,点击“自文本”按钮 在弹出的文件对话框中,选中要添加的...