c# 怎么把数据写入excel 一个c#做的程序,里面有几个textbox,一个datagridview,没有连接数据库我想新建一个excel,然后把textbox和datagridview的数据导入到excel里面该怎么操作呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 去找个DGV的导出实例,一看便知! 可以在网页中用vb脚本访问 Excel.Application这个对象然后创建EXCEL http://topic.csdn.net/u/20100317/14/b7537e89-4f57-4f72-b62a-935bdf7438ce.html?94729 数据写到dataset中,再导入到excel中 调用Excel的COM可以参照http://blog.csdn.net/lsj_zrp/archive/2009/07/29/4390944.aspx public static bool ExportExcel(string strFileName, DataTable dt, string strTempFileName) { if (dt == null || dt.Rows.Count == 0) return false; Excel.Application appExcel = new Excel.Application(); Excel.Workbook workbookData; Excel.Worksheet worksheetData; System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture; System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); workbookData = appExcel.Workbooks.Open(strTempFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); worksheetData = (Excel.Worksheet)workbookData.Sheets[1]; //DataTable的ColumnName作为Excel的列名 for (int i = 0; i < dt.Columns.Count; i++) { worksheetData.Cells[1, i + 1] = dt.Columns[i].ColumnName.Trim(); } Excel.Range xlRang = null; int iRowCount = dt.Rows.Count;//导出的数据总数量 int iParstedRow = 0;//已经到处的数据总数量 int iCurrSize = 0;//每次实际导出的数量,大多数情况下和iEachSize相同,最后一批可能不同 int iEachSize = 1000; // 设定的每次导出的数量 int iColumnAccount = dt.Columns.Count; int iCurrentRow = 0;//当前已经导出的数量,如果大于MaxRow,则新增一个Sheet再导出 int iSheet = 1;//当前的sheet object[,] objVal = new object[iEachSize, iColumnAccount]; try { iCurrSize = iEachSize; while (iParstedRow < iRowCount) { if ((iRowCount - iParstedRow) < iEachSize) iCurrSize = iRowCount - iParstedRow; for (int i = 0; i < iCurrSize; i++) { for (int j = 0; j < iColumnAccount; j++) objVal[i, j] = dt.Rows[iParstedRow + i][j].ToString(); } // 比如 A1 H10, 表示从 A 到 H 列, 1 到 10 行 xlRang = worksheetData.get_Range("A" + ((int)(iCurrentRow + 1)).ToString(), ((char)('A' + iColumnAccount - 1)).ToString() + (((int)(iCurrentRow + iCurrSize + 1)).ToString())); xlRang.Value2 = objVal; iParstedRow = iParstedRow + iCurrSize; iCurrentRow = iCurrentRow + iCurrSize; if (iCurrentRow > MaxRow) { worksheetData = (Excel.Worksheet)workbookData.Worksheets.Add(Missing.Value, workbookData.Worksheets.get_Item(iSheet), Missing.Value, Missing.Value); iSheet += 1; for (int i = 0; i < dt.Columns.Count; i++) { worksheetData.Cells[1, i + 1] = dt.Columns[i].ColumnName.Trim(); } iCurrentRow = 0; } } System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRang); xlRang = null; } catch { appExcel.Quit(); return false; } System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI; workbookData.Saved = false; workbookData.SaveAs(strFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value); appExcel.Quit(); return true; }本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lsj_zrp/archive/2009/07/29/4390944.aspx public static bool ExportForDataGridview(DataGridView gridView, string fileName, bool isShowExcle) { Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); try { if (app == null) { return false; } app.Visible = isShowExcle; Workbooks workbooks = app.Workbooks; _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet); Sheets sheets = workbook.Worksheets; _Worksheet worksheet = (_Worksheet)sheets.get_Item(1); if (worksheet == null) { return false; } string sLen = ""; char H = (char)(64 + gridView.ColumnCount / 26); char L = (char)(64 + gridView.ColumnCount % 26); if (gridView.ColumnCount < 26) { sLen = L.ToString(); } else { sLen = H.ToString() + L.ToString(); } string sTmp = sLen + "1"; Range ranCaption = worksheet.get_Range(sTmp, "A1"); string[] asCaption = new string[gridView.ColumnCount]; for (int i = 0; i < gridView.ColumnCount; i++) { asCaption[i] = gridView.Columns[i].HeaderText; } ranCaption.Value2 = asCaption; object[] obj = new object[gridView.Columns.Count]; for (int r = 0; r < gridView.RowCount - 1; r++) { for (int l = 0; l < gridView.Columns.Count; l++) { if (gridView[l, r].ValueType == typeof(DateTime)) { obj[l] = gridView[l, r].Value.ToString(); } else { obj[l] = gridView[l, r].Value; } } string cell1 = sLen + ((int)(r + 2)).ToString(); string cell2 = "A" + ((int)(r + 2)).ToString(); Range ran = worksheet.get_Range(cell1, cell2); ran.Value2 = obj; } workbook.SaveCopyAs(fileName); workbook.Saved = true; } finally { app.UserControl = false; app.Quit(); } return true; } private void SaveAs() { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Execl files (*.xls)|*.xls"; saveFileDialog.FilterIndex = 0; saveFileDialog.RestoreDirectory = true; saveFileDialog.CreatePrompt = true saveFileDialog.Title = ""; saveFileDialog.ShowDialog(); Stream myStream; myStream = saveFileDialog.OpenFile(); StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0)); string str = ""; try { for (int i = 0; i < dgv.ColumnCount; i++) { if (i > 0) { str += "\t"; } str += dgv.Columns[i].HeaderText; } sw.WriteLine(str); for (int j = 0; j < dgvAgeWeekSex.Rows.Count; j++) { string tempStr = ""; for (int k = 0; k < dgv.Columns.Count; k++) { if (k > 0) { tempStr += "\t"; } tempStr += dgv.Rows[j].Cells[k].Value.ToString(); } sw.WriteLine(tempStr); } sw.Close(); myStream.Close(); } catch (Exception e) { MessageBox.Show(e.ToString()); } finally { sw.Close(); myStream.Close(); } } http://topic.csdn.net/u/20090820/11/4fdeec59-f790-4afd-8ee9-519021ce72c3.html 可以把excel看成像sql这样的数据源,然后第一行看作字段名,这样插入就好了,笨点的方法就用循环易懂些 泛型类的多重继承 可访问性不一样 多个线程的同步问题 正则表达式 获取img中的src值,不能理解的问题 repeater 嵌套 初学者问个简单的问题?关于 循环Ping Ip地址的! 在使用API的PostMessage时输入中文遇到的问题 winform中如何禁止使用按键精灵之类的工具? 做收邮件的问题? C#里怎么得到一个byte的二进制形式的字符串(例如"10001100") 在网络盘中读写文件 求一个获取html中指定内容的正则代码
可以参照http://blog.csdn.net/lsj_zrp/archive/2009/07/29/4390944.aspx
{
if (dt == null || dt.Rows.Count == 0)
return false;
Excel.Application appExcel = new Excel.Application();
Excel.Workbook workbookData;
Excel.Worksheet worksheetData; System.Globalization.CultureInfo CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); workbookData = appExcel.Workbooks.Open(strTempFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); worksheetData = (Excel.Worksheet)workbookData.Sheets[1];
//DataTable的ColumnName作为Excel的列名
for (int i = 0; i < dt.Columns.Count; i++)
{
worksheetData.Cells[1, i + 1] = dt.Columns[i].ColumnName.Trim();
}
Excel.Range xlRang = null;
int iRowCount = dt.Rows.Count;//导出的数据总数量
int iParstedRow = 0;//已经到处的数据总数量 int iCurrSize = 0;//每次实际导出的数量,大多数情况下和iEachSize相同,最后一批可能不同
int iEachSize = 1000; // 设定的每次导出的数量
int iColumnAccount = dt.Columns.Count;
int iCurrentRow = 0;//当前已经导出的数量,如果大于MaxRow,则新增一个Sheet再导出
int iSheet = 1;//当前的sheet object[,] objVal = new object[iEachSize, iColumnAccount];
try
{
iCurrSize = iEachSize;
while (iParstedRow < iRowCount)
{
if ((iRowCount - iParstedRow) < iEachSize)
iCurrSize = iRowCount - iParstedRow;
for (int i = 0; i < iCurrSize; i++)
{
for (int j = 0; j < iColumnAccount; j++)
objVal[i, j] = dt.Rows[iParstedRow + i][j].ToString();
}
// 比如 A1 H10, 表示从 A 到 H 列, 1 到 10 行
xlRang = worksheetData.get_Range("A" + ((int)(iCurrentRow + 1)).ToString(), ((char)('A' + iColumnAccount - 1)).ToString()
+ (((int)(iCurrentRow + iCurrSize + 1)).ToString())); xlRang.Value2 = objVal; iParstedRow = iParstedRow + iCurrSize;
iCurrentRow = iCurrentRow + iCurrSize; if (iCurrentRow > MaxRow)
{
worksheetData = (Excel.Worksheet)workbookData.Worksheets.Add(Missing.Value, workbookData.Worksheets.get_Item(iSheet), Missing.Value, Missing.Value);
iSheet += 1; for (int i = 0; i < dt.Columns.Count; i++)
{
worksheetData.Cells[1, i + 1] = dt.Columns[i].ColumnName.Trim();
} iCurrentRow = 0;
}
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRang);
xlRang = null; }
catch
{
appExcel.Quit();
return false;
} System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI; workbookData.Saved = false;
workbookData.SaveAs(strFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value); appExcel.Quit(); return true;
}本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lsj_zrp/archive/2009/07/29/4390944.aspx
{
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
try
{
if (app == null)
{
return false;
}
app.Visible = isShowExcle;
Workbooks workbooks = app.Workbooks;
_Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Sheets sheets = workbook.Worksheets;
_Worksheet worksheet = (_Worksheet)sheets.get_Item(1);
if (worksheet == null)
{
return false;
}
string sLen = "";
char H = (char)(64 + gridView.ColumnCount / 26);
char L = (char)(64 + gridView.ColumnCount % 26);
if (gridView.ColumnCount < 26)
{
sLen = L.ToString();
}
else
{
sLen = H.ToString() + L.ToString();
}
string sTmp = sLen + "1";
Range ranCaption = worksheet.get_Range(sTmp, "A1");
string[] asCaption = new string[gridView.ColumnCount];
for (int i = 0; i < gridView.ColumnCount; i++)
{
asCaption[i] = gridView.Columns[i].HeaderText;
}
ranCaption.Value2 = asCaption;
object[] obj = new object[gridView.Columns.Count];
for (int r = 0; r < gridView.RowCount - 1; r++)
{
for (int l = 0; l < gridView.Columns.Count; l++)
{
if (gridView[l, r].ValueType == typeof(DateTime))
{
obj[l] = gridView[l, r].Value.ToString();
}
else
{
obj[l] = gridView[l, r].Value;
}
}
string cell1 = sLen + ((int)(r + 2)).ToString();
string cell2 = "A" + ((int)(r + 2)).ToString();
Range ran = worksheet.get_Range(cell1, cell2);
ran.Value2 = obj;
}
workbook.SaveCopyAs(fileName);
workbook.Saved = true;
}
finally
{
app.UserControl = false;
app.Quit();
}
return true; }
private void SaveAs()
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true
saveFileDialog.Title = "";
saveFileDialog.ShowDialog();
Stream myStream;
myStream = saveFileDialog.OpenFile();
StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
string str = "";
try
{ for (int i = 0; i < dgv.ColumnCount; i++)
{
if (i > 0)
{
str += "\t";
}
str += dgv.Columns[i].HeaderText;
}
sw.WriteLine(str);
for (int j = 0; j < dgvAgeWeekSex.Rows.Count; j++)
{
string tempStr = "";
for (int k = 0; k < dgv.Columns.Count; k++)
{
if (k > 0) {
tempStr += "\t";
}
tempStr += dgv.Rows[j].Cells[k].Value.ToString();
}
sw.WriteLine(tempStr);
}
sw.Close();
myStream.Close();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
sw.Close();
myStream.Close();
} }
http://topic.csdn.net/u/20090820/11/4fdeec59-f790-4afd-8ee9-519021ce72c3.html