![](/img/trans.png)
[英]How to add Column and Row header while appending data into CSV file using C#
[英]How can i fill empty row with (-) separated column header split data using c#
第一張照片是我當前在 excel 中的輸出,第二張照片顯示了我想要的
我遇到了問題,我在列標題名稱下方的數據集中插入一個空行,我希望用拆分的列標題名稱填充空行。 像(1-600,1-700,1-800 是分開的單元格,這里 1 是年,600 是周
這是我的代碼:
private void button4_Click(object sender, System.EventArgs e)
{
GetDataSet();
}
private void GetDataSet()
{
try
{
SqlConnection conn = new SqlConnection(Connection);
string data = null;
//int i = 0;
//int j = 0;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
SqlCommand cmd = new SqlCommand("select * from [CAT].[Tables].[LT1005ReportYAS]", conn);
cmd.Parameters.AddWithValue("@TransactionID", "2603_LT023_13022019174458");
cmd.Parameters.AddWithValue("@StartDate", "2019-01-01");
cmd.Parameters.AddWithValue("@EndDate", "2019-01-21");
cmd.Parameters.AddWithValue("@ClientID", 1030);
SqlDataAdapter da = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = 0;
da.SelectCommand = cmd;
DataSet ds = new DataSet();
conn.Open();
da.Fill(ds);
var dr = ds.Tables[0].NewRow();
ds.Tables[0].Rows.InsertAt(dr, 0);
ds.Tables[0].TableName = "Retailer";
ds.Tables[0].Columns.RemoveAt(0);
ds.Tables[0].Columns.RemoveAt(0);
Microsoft.Office.Interop.Excel.Application objexcelapp = new Microsoft.Office.Interop.Excel.Application();
objexcelapp.Application.Workbooks.Add(Type.Missing);
objexcelapp.Columns.AutoFit();
for (int i = 1; i < ds.Tables[0].Columns.Count + 1; i++)
{
Microsoft.Office.Interop.Excel.Range xlRange = (Microsoft.Office.Interop.Excel.Range)objexcelapp.Cells[1, i];
xlRange.Font.Bold = -1;
xlRange.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
xlRange.Borders.Weight = 1d;
xlRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
objexcelapp.Cells[1, i] = ds.Tables[0].Columns[i - 1].ColumnName;
}
foreach (DataTable dt in ds.Tables)
{
for (int i1 = 0; i1 < dt.Columns.Count; i1++)
{
xlWorkSheet.Cells[1, i1 + 1] = dt.Columns[i1].ColumnName;
}
}
for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
int s = i + 1;
for (int j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
{
data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
xlWorkSheet.Cells[s + 1, j + 1] = data;
xlWorkSheet.Columns.AutoFit();
Microsoft.Office.Interop.Excel.Range xlRange = (Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[i + 2, j + 1];
xlRange.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
//xlRange.Font.Bold = -1;
xlRange.Borders.Weight = 1d;
xlRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
}
}
xlWorkBook.SaveAs("Retailer.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MessageBox.Show("Excel file created");
conn.Close();
}
catch (Exception ex)
{
}
}
您可以使用 string.Split() 來完成您的要求。 例如:
string exampleValue = "1-600";
// This will split the string at the '-' (hyphen) character and produce an array with 2 values.
string[] splitString = exampleValue.Split('-');
Console.WriteLine(splitString[0]); // Expected output: 1.
Console.WriteLine(splitString[1]); // Expected output: 600.
這有幫助嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.